### Godot version

v4.2.rc.custom_build [d6a1db2b0]

### System information

Godot v4.2.rc (d6a1db2b0) - Windows 10.0.22621 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3090 Ti (NVIDIA; 31.0.15.4592) - AMD Ryzen 9 7950X 16-Core Processor (32 Threads)

### Issue description

`AnimatedValuesBackup::get_data()` can crash as the internal data map can have nullptr values if any of the tracks were METHOD or ANIMATION types, as `AnimatedValuesBackup::get_cache_copy()` defines that these types of tracks do not get valid copies.

The resulting crash is therefore a null pointer exception.

### Steps to reproduce

1. Open a project with these type of animation tracks.
2. Save the project.

### Minimal reproduction project

https://github.com/godotengine/godot-demo-projects/tree/master/3d/platformer
case Animation::LOOP_NONE: {
								at_anim_pos = MAX((double)anim->get_length(), time - pos); 
							} break;
							case Animation::LOOP_LINEAR: {
								at_anim_pos = Math::fposmod(time - pos, (double)anim->get_length()); 
							} break;
							case Animation::LOOP_PINGPONG: {
								at_anim_pos = Math::pingpong(time - pos, (double)a->get_length());
							} break;
							default:
								break;
						}
						if (player2->is_playing() || seeked) {
							player2->seek(at_anim_pos);
							player2->play(anim_name);
							t->playing = true;
							playing_caches.insert(t);
						} else {
							player2->set_assigned_animation(anim_name);
							player2->seek(at_anim_pos, true);
						}
					} else {
						
						List<int> to_play;
						a->track_get_key_indices_in_range(i, time, delta, &to_play, looped_flag);
						if (to_play.size()) {
							int idx = to_play.back()->get();
							StringName anim_name = a->animation_track_get_key_animation(i, idx);
							if (String(anim_name) == "[stop]" || !player2->has_animation(anim_name)) {
								if (playing_caches.has(t)) {