### 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)

prev_time = Math::pingpong(prev_time, (double)a->get_length());
									} break;
									default:
										break;
								}
							}
						}
						Vector3 scale[2];
						if (!backward) {
							if (prev_time > time) {
								Error err = a->try_scale_track_interpolate(i, prev_time, &scale[0]);
								if (err != OK) {
									continue;
								}
								scale[0] = post_process_key_value(a, i, scale[0], t->object, t->bone_idx);
								a->try_scale_track_interpolate(i, (double)a->get_length(), &scale[1]);
								root_motion_cache.scale += (scale[1] - scale[0]) * blend;
								scale[1] = post_process_key_value(a, i, scale[1], t->object, t->bone_idx);
								prev_time = 0;
							}
						} else {
							if (prev_time < time) {
								Error err = a->try_scale_track_interpolate(i, prev_time, &scale[0]);
								if (err != OK) {
									continue;
								}
								scale[0] = post_process_key_value(a, i, scale[0], t->object, t->bone_idx);
								a->try_scale_track_interpolate(i, 0, &scale[1]);
								scale[1] = post_process_key_value(a, i, scale[1], t->object, t->bone_idx);
								root_motion_cache.scale += (scale[1] - scale[0]) * blend;