How to switch scenes with two players using Photon?

I am making a multiplayer game in which there are two players. Both of the players use the same PlayerController script, as they are from the same prefab which has been instantiated. I want players to be able to switch scenes throughout the game, so I would either have to re-instantiate them again after a scene change or just use the DontDestroyOnLoad() method on the player, but the problem is that in order to use this method, I have to apply singleton pattern on it, which will directly contradict the instantiation and not allow multiplayer. I tried to make things work by adding Photon actor numbers to distinguish between players by applying the following code, but the problem still persists:

public class PlayerController : MonoBehaviour
{
    private static bool created1;
    private static bool created2;
    private int actorNum;
    public static int count;
  
    void Awake()
    {
        actorNum = PhotonNetwork.LocalPlayer.ActorNumber; //assigned 1 for Player1 and 2 for Player2
        Debug.Log("PLAYER ACTOR NUM " + actorNum);
        if (actorNum == 1)
        {  checkPlayer1();  }
        else
        {   checkPlayer2(); }
    }
      private void checkPlayer1()
    {
        if (!created1 && actorNum == 1)
        {
            DontDestroyOnLoad(this.gameObject);
            created1 = true;
            Debug.Log("PLAYER CREATED = " + created1);
        }
        else if (created1 == true && actorNum == 1)
        {
            Debug.Log(PhotonNetwork.LocalPlayer.ActorNumber + " ACTOR IS DESTROYED");
            Destroy(this.gameObject);
        }
        count++;
        Debug.Log("PLAYER1 AWAKE METHOD COUNT = " + count);
    }
    private void checkPlayer2()
    {
        if (!created2 && actorNum == 2)
        {
            DontDestroyOnLoad(this.gameObject);
            created2 = true;
            Debug.Log("PLAYER CREATED = " + created2);
        }
        else if (created2 == true && actorNum == 2)
        {
            Debug.Log(PhotonNetwork.LocalPlayer.ActorNumber + " ACTOR IS DESTROYED");
            Destroy(this.gameObject);
        }
        count++;
        Debug.Log("PLAYER2 AWAKE METHOD COUNT = " + count);
    }
 }

In the above code, I have tried to allow the script to create an instance only if the Photon player’s actor number is different (either 1 or 2), which will confirm that they are different players. The same is for destroying also, which will prevent creating duplicate instances of existing players when changing scenes.

However till Player1, everything seems fine. Problem comes when Player2 is instantiated and the Awake() method runs twice. The first time it runs, it creates Player2’s instance, but the second time, it destroys Player2. I am not sure what and why it is happening. Your help is much appreciated and please do tell me if there is an easier way to switch scenes in multiplayer than this.