I was considering dictionaries, but if i want a centralised way of exchanging the enemy configurations - not a massive switch statement with each variable of each type listed - I'll end up in the same situation, wanting to map dynamical references to enemy variables.
I don't quite understand. Say, you need to swap Orc's configuration with Zombie configuration. You don't need any switch statements, you can do this literally with two simple actions - just re-assign Orc's dictionary to Zombie and Zombie's to Orc.
Plus I'd have to maintain each enemy type's dictionary individually, to eg keep them in identical.
I'm not sure if I explained it correctly - you will only need one universal dictionary object for all enemy types. On creation of any "Enemies" family member, you spawn a new Dictionary instance and "attach" it to the enemy instance. You can also create a bunch of helper functions for getting/setting values in the dictionary, for easier management.