### Godot version

4.0.rc1

### System information

Windows 10

### Issue description

I'm not 100% sure what's causing it, but something in the blend tree of the animation tree doesn't play the correct animations when running. 

The problem happens when you jump for a 2nd time. It plays the fall animation for 1 loop before switching to the jump animation. It should only play the jump animation when moving upwards. Same effect happens rarely with the idle playing while jumping. 

![BlendTreeBug](https://user-images.githubusercontent.com/48493009/217973489-f5e84658-7fdc-4ba8-8a59-d23ab2611236.gif)



I think it has something to do with the transition nodes and some kind of blend between the 2 animations. Even though the xfade time is set to 0 on all transition nodes. Here's an image of the whole animation tree/ blend tree.

![AnimationTree](https://user-images.githubusercontent.com/48493009/217973509-c1c61888-a7a5-4d59-b2db-8f55d47f6679.PNG)



I have a simple script, mostly made of integrated/default code + a small amount I added for adjusting what animation to play in the blend tree. 3 animations. Idle, jump, and fall, shown below.

![bugProjectCode](https://user-images.githubusercontent.com/48493009/217973524-1931d8da-b0f7-46d3-9236-888c45712557.PNG)



### Steps to reproduce

open included project, start game, press jump button (space) twice. (it works like it should the first time. But only the first time)

### Minimal reproduction project

[BlendTreeBug.zip](https://github.com/godotengine/godot/files/10702792/BlendTreeBug.zip)

for (const KeyValue<StringName, Node> &E : nodes) {
		if (E.value.node == p_node) {
			return E.key;
		}
	}
	ERR_FAIL_V(StringName());
}
void AnimationNodeBlendTree::set_node_position(const StringName &p_node, const Vector2 &p_position) {
	ERR_FAIL_COND(!nodes.has(p_node));
	nodes[p_node].position = p_position;
}
Vector2 AnimationNodeBlendTree::get_node_position(const StringName &p_node) const {
	ERR_FAIL_COND_V(!nodes.has(p_node), Vector2());
	return nodes[p_node].position;
}
void AnimationNodeBlendTree::get_child_nodes(List<ChildNode> *r_child_nodes) {
	Vector<StringName> ns;
	for (const KeyValue<StringName, Node> &E : nodes) {
		ns.push_back(E.key);
	}
	ns.sort_custom<StringName::AlphCompare>();
	for (int i = 0; i < ns.size(); i++) {
		ChildNode cn;
		cn.name = ns[i];
		cn.node = nodes[cn.name].node;
		r_child_nodes->push_back(cn);
	}
}
bool AnimationNodeBlendTree::has_node(const StringName &p_name) const {