the problem is brief: no exposure shall change while staking is accepting and processing solutions for the next era.
with the current proposed solutions at #4517 and #5151, we do this at the offences module, preventing further queuing complexity to be leaked into staking. Ideally though, this logic isn't really pertaining to the offences module and should live in staking (or even elsewhere, open to discussion).
Implementing this in Staking would be rather involved since there is already a parameter there for SlashDeferDuration.
Additionally, an update to this should make sure in all storage items of Offences, we don't store duplicate IdentificationTuples. They resolve to Exposure which can be very big and unnecessary to store per validator in case of multiple offences, since they are the same. See #5151 (comment) for more detail.