### Godot version

4.2-rc1

### System information

Windows 11

### Issue description

The issue does not exist on Godot 4.1.3, only in 4.2

When you call `seek()` on the AnimationPlayer, the animation does not update instantly and freezes for a brief moment.
So if you need to switch multiple animations in a short amount of time while also calling `seek()`, the animation will just stop.

### Steps to reproduce

- Add a Sprite2D
- Set a spritesheet for the Sprite2D
- Add an AnimationPlayer
- Create a Property animation track and add some frames
- Loop the animation
- Create a different animation for the same sprite an loop it
- Switch between animations and call `seek()` when you do

### Minimal reproduction project

The included project demonstrates the issue perfectly (I know that calling `play()` and `seek()` on each `_process()` is a bit overkill, but it does allow for a better demonstration). The same project works perfectly in Godot 4.1.3.

[AnimationBug.zip](https://github.com/godotengine/godot/files/13400011/AnimationBug.zip)

delta = next_pos - cd.pos; 
		} break;
		case Animation::LOOP_LINEAR: {
			if (next_pos < 0 && cd.pos >= 0) {
				looped_flag = Animation::LOOPED_FLAG_START;
			}
			if (next_pos > len && cd.pos <= len) {
				looped_flag = Animation::LOOPED_FLAG_END;
			}
			next_pos = Math::fposmod(next_pos, (double)len);
		} break;
		case Animation::LOOP_PINGPONG: {
			if (next_pos < 0 && cd.pos >= 0) {
				cd.speed_scale *= -1.0;
				looped_flag = Animation::LOOPED_FLAG_START;
			}
			if (next_pos > len && cd.pos <= len) {
				cd.speed_scale *= -1.0;
				looped_flag = Animation::LOOPED_FLAG_END;
			}
			next_pos = Math::pingpong(next_pos, (double)len);
		} break;
		default:
			break;
	}
	double prev_pos = cd.pos; 
	cd.pos = next_pos;
	
	if (p_is_current) {
		if (cd.from->animation->get_loop_mode() == Animation::LOOP_NONE) {