I suggested team damage reflection long time ago, it was denied.
The problem with punishing teamkills is, that there are teamkills and there are teamkills. So how can a system know which kind of teamkill just happened?
I would suggest a "double" teamkill menu. One for the teamkiller, one for the teamkilled. In this menu the game asks, which kind of teamkill just happened, and both players say their opinion:
For the teamkilled:
- Intended teamkill
- unintended but stupid teamkill
- unintended teamkill by bad luck/by my fault
For the teamkiller:
- sorry, here you've got a small compensation (50g or something)
- sorry
- was your own fault!
Depending on what both players press, the system decides. If both players press "the truth" the system is fair and has no problems in deciding the punishment. If one or both players are lying, the system decides in favour of the teamkilled. But it stores this information during the whole session (not only the round or map). If again something "suspicious" with one of these players happens, it can be, that the system favours the other one.
If you are interested, I could work this system out. It will never reach perfect justice (if this can even exist), but from all systems I can imagine it comes the closest to.