Try two things:Varying the ammo load and charge range is not a bad idea at all. At the moment I'm still trying to figure out how to stop AI controled missile cavalry from skirmishing. It'll make a big difference when I work it out.
attributes - start_not_skirmishing
[Whichever is the firearm] stat_pri_attr or stat_sec_attr - prec
At least with thrown weaponry prec has made it so they cannot skirmish ever.