### Tested versions

- Reproducible in: v4.2.stable.official [46dc27791]
- Not reproducible in: v4.1.3.stable

### System information

Godot v4.2.stable - Windows 10.0.22621 - Vulkan (Forward+) - dedicated AMD Radeon RX 6600 (Advanced Micro Devices, Inc.; 31.0.21023.2010) - AMD Ryzen 7 5700X 8-Core Processor (16 Threads)

### Issue description

Starting with Godot 4.2, changing a Control node's anchor offsets with an AnimationPlayer node results in the offsets "snapping" to the keyframes, as if Nearest interpolation were used. 

This only applies to the Linear Interpolation Mode; Cubic still works as expected.

![resize_interp_fail](https://github.com/godotengine/godot/assets/26508550/a10a973f-afdc-45f2-986c-594aa3cdc9dc)

I encountered this regression when upgrading my project from 4.1.3 to 4.2. Minimum reproduction project provided below.

### Steps to reproduce

- Create a Control node with a Custom anchor preset.
- Create an AnimationPlayer track for one or more of its anchor offsets, with the Continuous update mode and Linear interpolation.
- Add keyframes to track(s)
- Play animation (either in the editor or in-game)

### Minimal reproduction project (MRP)

[ControlResize.zip](https://github.com/godotengine/godot/files/13589517/ControlResize.zip)

}
		needed_min_page_size += data_tracks[i].data.size() + data_tracks[i].get_temp_packet_size();
	}
	for (uint32_t i = 0; i < time_tracks.size(); i++) {
		needed_min_page_size += time_tracks[i].packets.size() * 4; 
	}
	ERR_FAIL_COND_MSG(p_page_size < needed_min_page_size, "Cannot compress with the given page size");
	while (true) {
		
		const uint32_t FRAME_MAX = 0xFFFFFFFF;
		const int32_t NO_TRACK_FOUND = -1;
		uint32_t best_frame = FRAME_MAX;
		uint32_t best_invalid_frame = FRAME_MAX;
		int32_t best_frame_track = NO_TRACK_FOUND; 
		bool start_frame = false;
		for (uint32_t i = 0; i < tracks_to_compress.size(); i++) {
			uint32_t uncomp_track = tracks_to_compress[i];
			if (time_tracks[i].key_index == track_get_key_count(uncomp_track)) {
				if (time_tracks[i].needs_start_frame) {
					start_frame = true;
					best_frame = base_page_frame;
					best_frame_track = i;
					time_tracks[i].needs_start_frame = false;
					break;
				} else {
					continue; 
				}
			}
			uint32_t key_frame = double(track_get_key_time(uncomp_track, time_tracks[i].key_index)) / frame_len;
			if (time_tracks[i].needs_start_frame && key_frame > base_page_frame) {