### Godot version

v4.0.beta.custom_build [0a9e6e478]

### System information

Ubuntu, Nvidia, Vulkan

### Issue description

When a Camera2D is freed - either explicitly or by being a child of a scene that is being switched away from via a method like `get_tree().change_scene_to_file()` - then this camera somehow stays active instead of Godot properly switching to no-camera-mode.

`get_viewport().get_camera_2d()` then returns all sorts of funny things from `<Freed Object>`  (it's supposed to return `null`) to arbitrary nodes of the current scene (not cameras).

This can lead to crashes.

### Steps to reproduce

checkout the MRP.

note that the "Go to scene 2" button switches places after pressing it.
that is because a camera is still active that does not exist in the current tree.

restart it a couple of times and spam the "Go to scene 2" button.
notice the garbage output.

### Minimal reproduction project

[godot_4_camera_bug.zip](https://github.com/godotengine/godot/files/10560455/godot_4_camera_bug.zip)
PhysicsDirectSpaceState3D::RayResult result;
#endif 
	PhysicsDirectSpaceState2D *ss2d = PhysicsServer2D::get_singleton()->space_get_direct_state(find_world_2d()->get_space());
	if (physics_has_last_mousepos) {
		
		
		
		bool has_mouse_event = false;
		for (const Ref<InputEvent> &m : physics_picking_events) {
			if (m.is_valid()) {
				has_mouse_event = true;
				break;
			}
		}
		if (!has_mouse_event) {
			Ref<InputEventMouseMotion> mm;
			mm.instantiate();
			mm->set_device(InputEvent::DEVICE_ID_INTERNAL);
			mm->set_global_position(physics_last_mousepos);
			mm->set_position(physics_last_mousepos);
			mm->set_alt_pressed(physics_last_mouse_state.alt);
			mm->set_shift_pressed(physics_last_mouse_state.shift);
			mm->set_ctrl_pressed(physics_last_mouse_state.control);
			mm->set_meta_pressed(physics_last_mouse_state.meta);
			mm->set_button_mask(physics_last_mouse_state.mouse_mask);
			physics_picking_events.push_back(mm);
		}
	}
	while (physics_picking_events.size()) {
		Ref<InputEvent> ev = physics_picking_events.front()->get();