I agree there should be multiple damage types for magic.
One idea I have is that there should be a "Ready Attack'/ Retaliate option. When a player has a unit use it, unit can no longer be given an attack or move order for that turn(and a unit can ready an attack if it has moved or attacked. The next time an enemy unit enters moves into combat range or attacks unit, the readied unit automatically attacks. This attack would take place the instant the condition is met. In the case of enemy unit moving into combat range the attack interupts the enemy's move action. Once the attack is complete the enemy may resume their move action. In the case of being attacked, the unit's attack takes place before the enemy's. If the enemy survives, they execute their attack. To take this a bit farther, different weapons could modify the damage done by a readied attack, such as double damage for spears( reflect their reach advantage and how they can be set against a charge).
The result of that would be making spears effective against charging units such as calvary without needing a special damage type. The downside is that it would make defense a very powerful option so there needs to be a way around it. One way could be requice the player to specify the direction the unit is facing and then only let the readied attack happen in that direction. There could also be a damage bonus for an unit that attacks a readied unit in a direction other than the one it is readied against. Say double damage for attack the sides of a readied unit and triple damage for attacking from behind it.
For mobility, what about letting some units move after attacking? Say a unit with a move speed of 5, it moves three and attacks then moves back two. This could apply to all mounted units or be special training units recieve. This would let mounted archers wear away an entrenched enemy like the Mongols played hit and run. However, mounted archers should have less range than infantry ones.
Now if my two ideas are combined, the result would be interesting. Mounted archers could wear down any melee infantry that go defensive and ready attacks. If the infantry to move to attack, the mounted archers can retreat or have other mounted units attack the infantry while they don't have attacks readied. By having the range of a mounted archer be less than an infantry archer, the infantry archer could ready an attack from behind a melee infantry unit and do damage to the mounted archer. The problem then would be a massed amount of infantry archers behind spear using infantry being very hard to beat for mounted archers. One solution could be using magci to 'break' the redied action of enemy units vie a spell that induces fear or extreme pain.
Another solution, and my third idea, would be to let completly mounted armies break off and leave the battle at will. There should be a few conditions or course, such as the enemy having no mounted units or if they do have mounted units over 50% of their units have readied an attack and thus cannot pursue.
Another way to have tactics would be having map position influence tactical battle starting position. If multiple stack can be in battle based on being adjacent to/touching the primary attacker/defender, then flanking situations(or defensive ones) can be set up. An example would be attack an enemy with an infantry army from the east and a mounted army from the west. You would then start on both sides of your enemy in a tactical battle. There should also be an option that you set for a unit stack that it will not join battles that happen nearby.