First off, I find it unrealistic that civillian NPCs try to fight enemies, especially an entire army of enemies. If an army of armored soldiers were invading, soldiers would stand and fight, but civillians would run to safety (and maybe even soldiers in certain situations). Hence, this suggestion.
When an enemy NPC or player is nearby, civillian NPCs would run away, as hobbits currently do. They would only fight if the NPC catches them and hits them, as if they are making a last stand. Peaceful NPCs (i.e Dorwinrim and Hobbits) would not try to fight, but would keep running, even after being hit, as they currently do.
Second, soldiers should be able to have their morale broken. When 10-20 or more NPCs of a faction are killed within 10 seconds or so, the soldiers of their faction within say 10-20 blocks of them would "break", and start running away from enemies, the way hobbits or dorwinion NPCs do. This effect would only last a short time however, maybe 30 seconds or so, then they would continue fighting as normal. When "broken", a soldier would not fight back when hit, but would keep trying to run away, or "retreating".
Some NPCs would be not be able to have their morale broken. These would be stronger and crueler NPCs, and would include such troops as trolls (all types), uruks (all types), swan knights, dwarfs, elves, half-trolls, berserkers/champions, golden easterlings, and gulfing warriors (since they seem to be the cruelest of the evil men, at least judging by speechbanks). All of these would keep fighting no matter what.
There would also be a new achievement, called "[No Quarter!]", which would be awarded when a player kills a broken/retreating soldier (but not a civillian).
This would make things more realistic, and make battles for interesting, since it would give an opportunity to run down retreating enemies.
Edit (Suggested by ArcenGamer): NPCs that spawn in a village for city should retreat to a fortified location in the center of the town (i.e. a fortress, tavern, etc) when broken, as if they are fortifying a defense.