I tried the workaround described in the thread above and it worked, but I ran into other two issues:
1 - The code of your workaround did not work on the server, but it worked after I put 2 as player index in GetPlayerController, so it seems that the newly created player takes index 2. Maybe this is not exacly an issue, but I wonder why this happens.
2 - Using your code on the client, re-running CreatePlayer after running RemovePlayer crashes the editor with this message:
Fatal error: [File:E:\UE4\UnrealEngine\Engine\Source\Runtime\Engine\Private\NetConnection.cpp] [Line: 1712] Failed to find LocalPlayer for received PlayerController
To avoid misunderstandings, this is the code:
To reproduce run pie and in the client press F and then G.
I was able to reproduce this issue on our end. I have written up a report ( UE-29969) and I have submitted to the developers for further consideration. I will provide updates with any pertinent information as it becomes available. Thank you for your time and information.