I like your experiments and thought about some changes:

We want players to make as much damage as possible without losing their accuracy, as such trying to minimize the camping.
PHP Code:
(Damage Given) / (Shots Hits
Punishing them for being hit, but minimizing this if they themselves hit a lot of other players :
PHP Code:
- (Damage received Hits
Headshots should also be rewarded, that's the tricky part:

PHP Code:
+ (Damage Given Headshots) / (Shots Headshots
-> I took Shots instead of Hits because otherwise I think this will have to big of an impact upon the formula.

Total :

PHP Code:
{(Damage Given) / (Shots Hits)} + {(Damage Given Headshots) / (Shots Headshots) } - {Damage Received Hits
About the remarks you made:

-> We could make it so that if someone hasn't done a single shot they will not be rated using this new method.
-> About the headshots and damage received, that is fixed in my suggestion but perhaps doesn't satisfy you just yet .