I like the current system, in so far as it promotes team work. Admittedly, it does so in a rather detached way: if your team wins, then you get more XP, so anything you do to help your team win is, technically, working towards getting more XP.
The thing is, this is rather abstract. There's no immediacy to it--no little flash of green numbers rewarding your current behavior. It does no directly reward good performance.
I think a combination of the current multi system and something that directly rewards individual players' performance would be best. I have no idea exactly how individuals should be rewarded without prompting selfish behavior, though. Perhaps the solution lies in a complex thing: something that takes into account many factors, like damage dealt, proximity to teammates (when killing and when being killed), number of kills, etc. Something like a super-score, which is then used to determine an individual XP bonus.
Also, this super-score should take into account whether you're on a horse or not, and if so, should actually take XP away from you. If you lose X amount of XP, you get banned until you respect into a less OP class.