I think archers get some morale gain while shooting enemies, so they need to lose more morale in melee fight before they would retreat. Higher morale gain/loss for nearby actions is a good thing, but there should be a component which is independent of the distance between troops.
Plus, there could be a passive morale loss for ranged troops if enemy formations are just nearby them.
I would also like to see some softer version of "Hold your grounds" order: I want to order archers to hold position, but fall back to avoid melee fights if enemy formations will approach them. "Follow your sergeants" is not a solution, because this behaviour covers all possible commands, including charge.