No need to rush, it’ll most likely be a long time.
I wish more of the built in spawn code was exposed in 4.8 to BP, because the C++ side of this is awesome. If you make your own player start blueprint, you can add a variable to it, something like TeamNum. Then in BP_Deathmatch’s RespawnPlayer function, look for the comment block that simply grabs a random player start. Here, you could instead grab a random player start that matches your teamnum. I’d do this by looping through all actors of class with your new player start blueprint, checking to see if its teamnum value matches, and if it does, add it to another array. Then after that, use a random spawn point from this new array.
You can change the team of a player by setting the TeamNum variable in the appropriate playerstate, however doing it automatically for the highest scoring player would need some work. Perhaps on tick, use get highest ranked player for team 1 and set that player to team 0… you’d have to come up with some buffering so you’re not constantly swapping the highest scoring player over and over again.
Ah, yes, this is a known issue. Unfortunately I can’t do anything about this, this is a bug with the engine itself and the Restart Game blueprint node. Perhaps a future engine update will correct this.