Our problem occurs with both the precompiled 4.11.2 and the source built engine (release branch). In our case we’re not using Steam, but your and our symptoms are similar and personally I suspect Steam and source vs. binary don’t make a difference.
I’ve tried my best today to understand the GameMode, PlayerController and World code related to seamless travel. To do that, I’ve compiled the engine from source and added a bunch of logging messages to get an image of what function calls happen in what order, on both host and client.
My understanding is that for the seamless travel to succeed for a client, AGameMode::HandleSeamlessTravelPlayer must be called with the client’s player controller being passed. For remote clients, this relies on the client himself reporting that he is done loading the map via APlayerController::ServerNotifyLoadedWorld.