When you join a world with a remote player in a station, OnStationEntered() is called for that player before OnPlayerJoined() is called for that player, so we receive a valid VRCPlayerApi that is not yet known to our scripts.
This requires us to build complicated workarounds so that our scripts don't crash. We need to delay the event ourselves somehow until that player has officially joined the world. It is not intuitive that this could happen, and VRChat should correct the order of events here.