First, make the king playable from the start but weaker than what the king ends up being later on. Second, make it that all units are available from the start. Now, shift the upgrades from being static and always available to being more random and based on how many enemies the player defeats (Not enough kills? No upgrade for you).
That actually makes a lot of sense. So the units/characters will have EXP in way and only give upgrades once you’ve collected enough. So the users will also have the choice of how to use each unit and have their own unique “build” of the army.
Now you shift these upgrades into three categories: the People, the Enemy and the King.
I actually really like this idea! It kind of gives the card system a meaning, instead of just being there as another system in the game. It’ll also fix a lot of the other gameplay issues like you mentioned.
Another thing I’d suggest as part of this would be to change how waves work. Instead of each wave just coming, make it that a wave has to be completely cleared out before the next can begin.
I was actually thinking from a while to split the zones into different parts. An idea I had was to show multiple layers of the castle walls, each showing a layer of the society - king, ministers, knights, general population, slums. Each of this zones will have their own playable unit unlocked from the start. The units can explore the ruins outside of the castle walls during the day to find ways to defeat enemies, hunt for resources, progress the story, etc and then switch to a TD during the night to fend off waves of enemies. But again, I’ll have to do the balance between them right so it doesn’t feel like two games forcefully joined together.
Again, a massive thank you for taking the time and effort to playtest in depth, along with giving such helpful feedback, which is impossible to get during a normal jam. Really appreciate it :D