Why not just have a set amount of experience per type of battle?
If it is a village fight then you get X amount of experience, castle Y, and town Z. If it is a fight in the field then you should get an amount of experience relative to the number of troops involved capped at value Z (or Q). Field battles could also have the amount of experience at stake depend on proximity to fiefs. A skirmish in the middle of the open plain with no nearby fiefs is not as valuable as one outside the gates of a town. So maybe even a small fight in a place of interest could be rewarded properly.
This value XYZ(or Q) would then be ran through some equation to work out given experience depending on how the battle went. Perhaps for example by a ratio for "team kills" versus "team deaths" and some sort of multiplier for winning or losing. So if you win you get more experience and if you get more kills than deaths (as a team) you get more experience, per person.
I suggest communism for doling out experience because strategus battles are a team effort and I think it would be bad to encourage kill stealing or wasting your lives for the chance of more kills and thus more experience. People can fight in support and get very few kills but be much more valuable to the team than some kill whore.
---
Seems to qualify for most of your requests, maybe not a genius idea though