### Godot version

4.1 dev3

### System information

Windows 11, Forward+, Intel 13700k, 4070ti

### Issue description

In 4.0.x and in 4.1 dev2, if you overwrite the rotation of a bone in `_process` it has preferred over the currently running animation. In 4.1 dev3, the running animation takes precedence and overwrites any changes in `_process`. This happens both with a simple animation and with an animation tree, and happens in-editor and in-game.

### Steps to reproduce

1. Open the attached project.
2. Click on `AnimationPlayer` and pick an animation, e.g. `Armature|Standing`. Set it to looping if it's not already. (@RandomShaper's note: and play it).
3. Click on the `PointOfInterest` and move it along the X axis.
4. If you're on:
    - 4.0.x or 4.1-dev2: Notice the head rotating
    - 4.1-dev3: Notice that nothing happens

### Minimal reproduction project

[BoneRotationIssue-4.0.3.zip](https://github.com/godotengine/godot/files/11582187/BoneRotationIssue-4.0.3.zip)
[BoneRotationIssue-4.1-dev.zip](https://github.com/godotengine/godot/files/11582188/BoneRotationIssue-4.1-dev.zip)


Should include all licensing stuff for the model, but let me just add [the link](https://opengameart.org/content/human-model-ready-for-animation) for good measure.
if (process_groups[i]->removed) {
			continue;
		}
		ProcessGroup *pg = process_groups[i];
		
		bool process_valid = false;
		if (p_physics) {
			if (!pg->physics_nodes.is_empty()) {
				process_valid = true;
			} else if (pg->owner != nullptr && pg->owner->data.process_thread_messages.has_flag(Node::FLAG_PROCESS_THREAD_MESSAGES_PHYSICS) && pg->call_queue.has_messages()) {
				process_valid = true;
			}
		} else {
			if (!pg->nodes.is_empty()) {
				process_valid = true;
			} else if (pg->owner != nullptr && pg->owner->data.process_thread_messages.has_flag(Node::FLAG_PROCESS_THREAD_MESSAGES) && pg->call_queue.has_messages()) {
				process_valid = true;
			}
		}
		if (process_valid) {
			pg->last_pass = process_last_pass; 
			process_count++;
		}
	}
	nodes_removed_on_group_call_lock--;
	if (nodes_removed_on_group_call_lock == 0) {
		nodes_removed_on_group_call.clear();
	}
}
bool SceneTree::ProcessGroupSort::operator()(const ProcessGroup *p_left, const ProcessGroup *p_right) const {