Advise on Multiple Characters

I am creating an Minigame-Madness where you have different controls and characters for each mini game, so I had to think about this too.

Inheritance of Classes (and therefore Blueprints) is your friend. You can build whole trees with this for example:

“TheSuperMegaRootCharacter” has all the basic stuff in it, which is common to every character.
From there, you might have 3 blueprints which inherit from the first one: Seacreature, Landcreature and Aircraftie (or whatever). Those probably have some very specific properties and specific controls. I highly suggest putting those controls into the character, not the PlayerController.
How deep your inheritance should go is up to you, but I suggest you use 3+ levels (don’t forget the root one. You might not think of any useful common functionality now, but I guarantee you suddendly find out you have some basic functionality you want to have).

The beauty of inheritance is, that you can add, overwrite and even disable (by overwriting and doing nothing) the stuff you defined in the parent blueprint!

I doubt that you have 300 differently controlled characters. So I suggest you use inheritance and group the blueprints by their abilities and/or controls. If you have one billion different horses, you should make one horse blueprint and somehow let the user change the mesh/texture instead.

In the best case, you have maybe 5 blueprints, but endless different animals.