Do you call ForceClassSelection anywhere? There's no reference to it in your code and without it "OnPlayerRequestClass" will never be called after death.
Nope. I do call "TogglePlayerSpectating" upon connection, then I use SetSpawnInfo and SpawnPlayer once they login/register. Isn't that a bug that's been triggering it?