They would need some protection after leaving. If they go turncoat or leave, and they just get moved right next to the army they were in, they will just be promptly murdered by the player.
Not necessarily. A battle where you've lost a hero is likely to have winnowed your army quite a bit. Also, if it's a hero you've leveled a bit, you may prefer to pay the premium to get them back. A fun implication I hadn't thought through is that you would sometimes be able to recruit heroes you've defeated.
I like Unacomn's idea of a spell to increase hero loyalty. Perhaps a life spell with maintenance that inspires loyalty and a death spell with no maintenance that bends their will to yours, but causes a minor penalty to some other attribute.
Hm. Should faction reputation also be a minor factor desertion risk, or is that a step too complicated?