I have answered my own question. The problem I was having was that I misunderstood anonymous auth. After initializing the AuthenticationService, I used .SignOut(true) before .SwitchProfile([newprofile]). I then needed to re-use await GetPlayerFromAnonymousLoginAsync(); to sign the new profile in on the same account. I also found that inserting a hardcoded delay with await Task.Delay(1000); before signing back in helped to solve timeliness conditions, but I think this will be better done using the events systems if it proves to be a problem during live testing.