### Godot version

4.0.stable

### System information

Ubuntu, AMD Ryzen 5 2600, GTX 1650, Vulkan

### Issue description

When putting Tilemaps with lots of tiles on Parallaxlayers, it massively slows down Godot from roughly around 600fps to 20fps. This happens whether or not the parallaxlayers are invisible, have lightoccluder information, or have collision. It seems just the process of having lots of tiles exist slows it down. 

### Steps to reproduce

Open the minimal project and convert the 2 parallaxlayers from parallaxlayers to basic node2ds and watch the FPS massively increase.

### Minimal reproduction project

[ParallaxTilemap.zip](https://github.com/godotengine/godot/files/11566812/ParallaxTilemap.zip)

struct TileMapLayer {
		String name;
		bool enabled = true;
		Color modulate = Color(1, 1, 1, 1);
		bool y_sort_enabled = false;
		int y_sort_origin = 0;
		int z_index = 0;
		RID canvas_item;
		HashMap<Vector2i, TileMapCell> tile_map;
		HashMap<Vector2i, TileMapQuadrant> quadrant_map;
		SelfList<TileMapQuadrant>::List dirty_quadrant_list;
		RID navigation_map;
		bool uses_world_navigation_map = false;
	};
	LocalVector<TileMapLayer> layers;
	int selected_layer = -1;
	
	HashMap<RID, Vector2i> bodies_coords;
	
	HashMap<RID, int> bodies_layers;
	
	Vector2i _coords_to_quadrant_coords(int p_layer, const Vector2i &p_coords) const;
	HashMap<Vector2i, TileMapQuadrant>::Iterator _create_quadrant(int p_layer, const Vector2i &p_qk);
	void _make_quadrant_dirty(HashMap<Vector2i, TileMapQuadrant>::Iterator Q);
	void _make_all_quadrants_dirty();
	void _queue_update_dirty_quadrants();
	void _update_dirty_quadrants();
	void _recreate_layer_internals(int p_layer);
	void _recreate_internals();
	void _erase_quadrant(HashMap<Vector2i, TileMapQuadrant>::Iterator Q);