Move player between subscenes in open world game?

How can I make sure my player object remains loaded when I constantly load/unload sub-scenes?

Should I give it a DontDestoryOnLoad ?
Should I make it a prefab and instantiate it from an object that has DontDestroyOnLoad ?
Should I keep a separate sub-scene always loaded from which the player object will originate?

What is the best practice for solving this problem in the context of an open world game (identical to Skyrim)?

DontDestroyOnLoad(gameObject); should work