(Not an expert but…)
You can’t destroy a PlayerController, since this is the “soul” of the player, that connects it with your game. However you can (as you wrote if I understand well) destroy it’s pawn and make it possess another one. I think you should make a custom event in the PC, with the name “InitialSetup” for example, and pass all the information that you need with this after the OnPostLogin event. Maybe the whole BeginPlay chain should be connected to here instead. But actually if I know well (but don’t believe me without test), after the 1st PC, the others don’t have their Pawn yet spawned when the OnPostLogin is called. And also every PC’s BeginPlay event is called later than the OnPostLogin, so if you can pass the info to them then let the BeginPlay do the hard work, if you insist.