8Bit The sad news is that there is never only one good way of doing things. Everything has cons and pros. But this is the creative part of software development, isn't it?
I would not try to implement the 50 versions of entities you need upfront. I would implement 2 or 3, put them in my game, and move to another area of the game and back and forth to see how one part interacts with the other. There are many chances that whatever version of your entity you end up with, even if after a lot of analysis, it will require changes at the end.