A further thought: this is another of the fundamental tradeoffs in doing this sort of design work.
In a laggy environment, you can either have dodging work 100% correctly client side, if you dodged it, it didn't hit you, no questions asked . . . or you can have aiming work that way, if you hit it, you hit it, no questions asked.
You can have one or the other. You cannot have both. (And in a server-based setup, you generally get neither).
And I think which you choose (or which you choose to emphasize, if you give both up) will depend on what sort of game it is. In an aiming-heavy, mostly fast-weapon or instant-hit FPS (like maybe DOOM), you should pick aiming. In slow-weapon, slow-ship, combat-flight-maneuver-oriented Descent, the original developers correctly picked dodging.
Which highlights something else: When doing netcode for an FPS, your engineering decisions are game design decisions. Never overlook that.