Because they can go around with endless health while their afk variable is set on true?
Freezing them is the best option.

Not if you monitor their positions, and the commands/areas they are entering/leaving.

You could put them in a room, 'afk' so they can simply sit... Even put them in another world.

One problem with your code is you aren't using that callback correctly. If you don't want the damage to affect, then use the appropriate return, in the right callbacks. Isolating the fist, you may want to alert an admin that someone is being a dick (punching), or abusing(walking around with afk on(Even though you should monitor their positions))...

(It's also not a new bug, and has no 'fix' in fixes.inc, yet it almost should for this sort of problem)