I agree with all these suggestions - but what do you think about this?
1) Making them a bit rarer.
2) Making them primarily come from quests/special events.
For example, each time you click on them to speak - a dialogue comes up. Maybe they are being hunted by creatures you have to destroy. Maybe at an inn you hear a rumor of a hero stuck in a cavern somewhere - you go there, defeat some creatures and he fights by your side during the battle. He/she then offers their allegience.
They don't always have to be quest items. for example:
Maybe one appears when you destroy a particularly tough enemy unit - and your defeat of it releases a prisoner. Or maybe when taking a city from an enemy. Or maybe when you click to speak, they have some requirement of your kingdom such as a shard, or an ancient library - otherwise they don't join you until you do meet the requirements.
At least you now have a story as to why they are loyal to you.
On a tangent for a minute - maybe they also have their own lives. Like they sometimes leave to pursue some quest on their own - or maybe you have the option to follow them on it (otherwise they are gone for 10 turns).
And that reminds me - what about a loyaty rating - that goes up the more you do for them.
BOTTOM LINE: I want a story as to why each hero is with me - I want it to be special, not common. And I certainly don't want them to simply be because I paid them 100 gold. Right now they don't have a whole lot of personality/character. I like ROME total war and how each general felt like a unique personality.
But I digress....
Mozo