You can change the team with CBasePlayer::ChangeTeam and there comes no "Choose Model Screen"...
Then you have to change the class with a ClientCommand or with CCSPlayer::HandleCommand_JoinClass (the player dies)
Or you just change the player model (the player doesn't die), but i dont know if it works correct