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

bit_width[i] = (data_key[COMPONENTS] >> (i * 4)) & 0xF;
			}
			uint32_t frame_bit_width = (data_key[COMPONENTS] >> 12) + 1;
			AnimationCompressionBufferBitsRead buffer;
			buffer.src_data = (const uint8_t *)&data_key[COMPONENTS + 1];
			for (uint32_t i = 1; i < data_count; i++) {
				uint32_t frame_delta = buffer.read(frame_bit_width);
				base_frame += frame_delta;
				for (uint32_t j = 0; j < COMPONENTS; j++) {
					if (bit_width[j] == 0) {
						continue; 
					}
					uint32_t valueu = buffer.read(bit_width[j] + 1);
					bool sign = valueu & (1 << bit_width[j]);
					int16_t value = valueu & ((1 << bit_width[j]) - 1);
					if (sign) {
						value = -value - 1;
					}
					decode_next[j] += value;
				}
				next_time = double(base_frame) * frame_to_sec + page_base_time;
				if (p_time < next_time) {
					break;
				}
				packet_time = next_time;
				for (uint32_t j = 0; j < COMPONENTS; j++) {
					decode[j] = decode_next[j];
				}
				if (key_index) {
					(*key_index)++;