I've narrowed the problem down to setting a character's invulnerability status (0 or 1) within the scope of an OnLoaded(_, _, _, _) block, but only after when reloading a game from having lost combat. The problem then persists until the client is restarted.
What's odd is that this will occur even when using a timer or character event to displace the scope of the function call. Moreover, in the case of a very long timer, it will happen even before the timer fires.
Oddly specific, I know--so much so that it begs the question as to whether other functions will cause this problem.