The error you are getting is due to the TankRef Reference Variable being empty.
This only happens if the Spawning fails.
So i guess the CollisionHandlingOverride just needs to be set to AlwaysSpawn (in the Spawn Actor Node of the Tank).
You don’t need to cast the Controller. The Possess function is a PlayerController function and the passed NewPlayer reference is already a PlayerController.
Are you sure that nothing is blocked the cameras? Set the SpringArm of your Camera to not doing a Collision Check. Can be done in its option when selecting the SpringArm. If you don’t yet use one for your Camera, then you should do that now.
What do you mean with “separate Controller”? Sure it’s a separated one. Each Player has its own PlayerController. That’s what represents the Player after all.