### Godot version

v4.1.rc1.official [1f9e540f1]

### System information

Windows 10

### Issue description

Attempting to reorder the children of a TabContainer results in an unintended ordering and incorrect undo states.

Also happens in v4.0.3.stable.official [5222a99f5].

https://github.com/godotengine/godot/assets/3820082/2c2458e3-88ad-46d9-8a04-f289a049984a



### Steps to reproduce

1. Add a new TabContainer
2. Add a few children to it
3. Drag and drop to erroneously reorder them
4. Attempt to undo the change

### Minimal reproduction project

N/A
#ifdef DEBUG_ENABLED
	// Make sure it's empty.
	_print_orphan_nodes_map.clear();
	// Collect and print information about orphan nodes.
	ObjectDB::debug_objects(_print_orphan_nodes_routine);
	for (const KeyValue<ObjectID, List<String>> &E : _print_orphan_nodes_map) {
		print_line(itos(E.key) + " - Stray Node: " + E.value[0] + " (Type: " + E.value[1] + ")");
	}
	// Flush it after use.
	_print_orphan_nodes_map.clear();
#endif
}
void Node::queue_free() {
	// There are users which instantiate multiple scene trees for their games.
	// Use the node's own tree to handle its deletion when relevant.
	if (is_inside_tree()) {
		get_tree()->queue_delete(this);
	} else {
		SceneTree *tree = SceneTree::get_singleton();
		ERR_FAIL_NULL_MSG(tree, "Can't queue free a node when no SceneTree is available.");
		tree->queue_delete(this);
	}
}
void Node::set_import_path(const NodePath &p_import_path) {