But here is the thing that is messed up, it counts ALL damage including the overkill damage.
No, it does not.
In somewhat technical terms: It looks at the victim's health and the damage done, and takes the smaller value. Hence, if you damage a 100hp player with 2000 damage, you are punished for 100 damage, because 2000 > 100. If you shoot a 100hp player for 20 damage, you are punished for 20 because 100 > 20.
The line of code in question:
local hurt_amount = math.min(victim:Health(), dmginfo:GetDamage())
Perhaps the server you were playing on has meddled with the karma convars, making the kill penalty very high for example.