Hi there Pi-C thanks for answering. All I needed was a way to change the character in runtime stage as you do in your selector. There is no need to change data stages.
Data stage changes are done by my mod. Basically, new character skins are based on data.raw.character.character, with properties like character animations and corpse changed. But Bob's classes introduce changes to other properties as well (e.g. mining/building reach, inventory size, speed). These changes should be kept no matter what skin the player is using, so after all character mods are done creating their version of the default character I create a copies of those the new characters (one per class, so they are using the new graphics from the character mod with the properties set by the class).
In the control stage, Bob's mod informs my mod whenever a player changes to another class. My mod will then replace the player's current character with a new entity that corresponds to the currently selected character and the new class. Likewise, when a player is using my character selector to change the character's appearance, the current character will be replaced with a new entity corresponding to the new skin and the current class.
I could add some remotes on a pack mod I've made. If you would like to take a look its here. It is working fine now: https://mods.factorio.com/mod/deep_core_operations_skins_pack
So you provide new skins for the default character, based on your character class? I'll have to check this out …