Organizing multiple character types and their many variants?

You create BLueprintable Component then copy your code there. Some extra code is required for component to communicate with owner.