### Godot version

v4.1.1.stable.official [bd6af8e0e]

### System information

Godot v4.1.1.stable - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 6GB (NVIDIA; 31.0.15.3179) - Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz (6 Threads)

### Issue description

When connecting the `animation_started` signal from an animation tree, the connected method is always called twice.
This only occurs with the `animation_started` signal, the `animation_finished` signal is only emitted once.

This unfortunately makes relying on the signal impossible.

### Steps to reproduce

(See minimal production project)
- Use `animation_started.connect()`
- Print something out in the connected method (the example project prints the `anim_name` parameter)
- method is called twice -> two prints in the console

### Minimal reproduction project

[anim_tree_signal_bug.zip](https://github.com/godotengine/godot/files/12229864/anim_tree_signal_bug.zip)

The animation tree travels to the 'move' animation when `ui_accept` is pressed (see `anim_tree.gd`) and has print statements inside the methods connected to both the `animation_started` and `animation_finished` signal.

}
AnimationNodeTimeSeek::AnimationNodeTimeSeek() {
	add_input("in");
}
bool AnimationNodeTransition::_set(const StringName &p_path, const Variant &p_value) {
	String path = p_path;
	if (!path.begins_with("input_")) {
		return false;
	}
	int which = path.get_slicec('/', 0).get_slicec('_', 1).to_int();
	String what = path.get_slicec('/', 1);
	if (which == get_input_count() && what == "name") {
		if (add_input(p_value)) {
			return true;
		}
		return false;
	}
	ERR_FAIL_INDEX_V(which, get_input_count(), false);
	if (what == "name") {
		set_input_name(which, p_value);
	} else if (what == "auto_advance") {
		set_input_as_auto_advance(which, p_value);
	} else if (what == "reset") {
		set_input_reset(which, p_value);
	} else {
		return false;
	}
	return true;
}
bool AnimationNodeTransition::_get(const StringName &p_path, Variant &r_ret) const {