As for the units: I always try to add some features to make them more history-like.
This is what I changed to my export_descr_unit file, to make it more historically accurate and make battles more difficult:

All longbows:
- +3 missile attack
- +30 range
- recruitement cost increased

Crossbows:
- mounted crossbowmen +5 missile attack
- foot crossbowmen +3 or +4 missile attack
- recruitement cost of some crossbow units increased
- stat_fire_delay increased to 60 for all peasant crossbow units, 54 for all militia crossbow units, and 48 for all 'regular' crossbow units (standard is 18)

Knights (both mounted & dismounted):
- Armour increased (up to 2x for knights wearing plate armour)
- Defence skill increased
- Recruitement & upkeep cost much higher --> no more armies consisting of nearly only knights. Knights now dominate the battlefield, like they should, but they cost a lot.

Gunpowder infantry:
- Musketeers (including mounted musketeers) +3 missile attack
- Musketeers (including mounted musketeers) -30 range
- Arqubuesiers -30 range

All infantry (except peasants)
- Mass increased, to make cavalry charges a bit less effective.
A well-executed charge can still destroy a whole unit of light infantry, but usually only kills the first 2 lines of heavily armoured infantry like foot knights or JHI.



With these changes, there's much more difference between armies of all factions, and battles generally are a lot more difficult (f.e, any type of knights can completely decimate several units of light infantry, so you need to counter them with your own knights, etc)