### Godot version

4.2.rc 7022271

### System information

Godot v4.2.rc (702227129) - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3090 (NVIDIA; 31.0.15.3713) - Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz (16 Threads)

### Issue description

Godot crashes due to a complicated chain of events in the stack trace involving `reimport_files`, `reload_scene` and a synchronous `clear_history` which memdeletes several dangling TrackCache pointers in this RefCounted AnimatedValuesBackup ?!

```
Critical error detected c0000374
A breakpoint instruction (__debugbreak() statement or a similar call) was executed in godot.windows.editor.x86_64.exe.
```
![image](https://github.com/godotengine/godot/assets/39946030/90bdec00-d116-44c3-9eb6-1d80969dd92a)

Something feels very wrong about holding raw pointers to an AnimationMixer TrackCache in AnimatedValuesBackup. I can't follow the flow at all of how values get stored in AnimatedValuesBackup.

To maintain single-free semantics, these `TrackCache*` values must be **moved** and **owned by** the AnimatedValuesBackup.

TrackCache pointers must never be shared by other objects, otherwise a use-after-free or double-delete is likely to happen

### Steps to reproduce

1. Follow the steps in #85232 to Apply Reset on an opened gltf
2. Select the gltf in the filesystem (it will already be selected if you followed the steps)
3. Open the Import dock and click Reimport
4. Godot will crash.

### Minimal reproduction project

[ApplyReset.zip](https://github.com/godotengine/godot/files/13442920/ApplyReset.zip)

track_value->is_continuous |= anim->value_track_get_update_mode(i) != Animation::UPDATE_DISCRETE;
				track_value->is_using_angle |= anim->track_get_interpolation_type(i) == Animation::INTERPOLATION_LINEAR_ANGLE || anim->track_get_interpolation_type(i) == Animation::INTERPOLATION_CUBIC_ANGLE;
				
				
				
				bool skip_update_mode_warning = false;
				if (track_value->is_continuous) {
					if (!Animation::is_variant_interpolatable(track_value->init_value)) {
						WARN_PRINT_ONCE_ED("AnimationMixer: '" + String(E) + "', Value Track: '" + String(path) + "' uses a non-numeric type as key value with UpdateMode.UPDATE_CONTINUOUS. This will not be blended correctly, so it is forced to UpdateMode.UPDATE_DISCRETE.");
						track_value->is_continuous = false;
						skip_update_mode_warning = true;
					}
					if (track_value->init_value.is_string()) {
						WARN_PRINT_ONCE_ED("AnimationMixer: '" + String(E) + "', Value Track: '" + String(path) + "' blends String types. This is an experimental algorithm.");
					}
				}
				if (!skip_update_mode_warning && was_continuous != track_value->is_continuous) {
					WARN_PRINT_ONCE_ED("AnimationMixer: '" + String(E) + "', Value Track: '" + String(path) + "' has different update modes between some animations which may be blended together. Blending prioritizes UpdateMode.UPDATE_CONTINUOUS, so the process treats UpdateMode.UPDATE_DISCRETE as UpdateMode.UPDATE_CONTINUOUS with InterpolationType.INTERPOLATION_NEAREST.");
				}
				if (was_using_angle != track_value->is_using_angle) {
					WARN_PRINT_ONCE_ED("AnimationMixer: '" + String(E) + "', Value Track: '" + String(path) + "' has different interpolation types for rotation between some animations which may be blended together. Blending prioritizes angle interpolation, so the blending result uses the shortest path referenced to the initial (RESET animation) value.");
				}
			}
			track->setup_pass = setup_pass;
		}
	}
	List<NodePath> to_delete;
	for (const KeyValue<NodePath, TrackCache *> &K : track_cache) {
		TrackCache *tc = track_cache[K.key];
		if (tc->setup_pass != setup_pass) {