### Godot version

4.0 stable

### System information

Windows 10

### Issue description

Running .clear() on a TileMap with Scene tiles leaves the tiles in place, as though nothing happened.

This appears to be the same issue as raised in [#69596](https://github.com/godotengine/godot/issues/69596), [#72456](https://github.com/godotengine/godot/pull/72456), and [67330](https://github.com/godotengine/godot/pull/67330). None of the previous issues seem to have presented a fix for this issue besides running some dummy operations on the TileMap, which have not had any effect for me.

Manually running queue_free() on each tile scene doesn't work, presumably since they are being cached. And running a dummy operation on the TileMap doesn't have any impact to speak of.

Not sure how to proceed, or if it's just impossible to remove Scene tiles once they're created.

### Steps to reproduce

The minimal reproduction project has a TileMap with several simple scene tiles. The attached script attempts to .clear() the TileMap when the user presses Enter, demonstrating my issue.

### Minimal reproduction project

[TileMapMinimumRecreationProject.zip](https://github.com/godotengine/godot/files/10959111/TileMapMinimumRecreationProject.zip)

dest_rect.size = atlas_source->get_runtime_tile_texture_region(p_atlas_coords).size;
		dest_rect.size.x += FP_ADJUST;
		dest_rect.size.y += FP_ADJUST;
		bool transpose = tile_data->get_transpose();
		if (transpose) {
			dest_rect.position = (p_position - Vector2(dest_rect.size.y, dest_rect.size.x) / 2 - tile_offset);
		} else {
			dest_rect.position = (p_position - dest_rect.size / 2 - tile_offset);
		}
		if (tile_data->get_flip_h()) {
			dest_rect.size.x = -dest_rect.size.x;
		}
		if (tile_data->get_flip_v()) {
			dest_rect.size.y = -dest_rect.size.y;
		}
		
		if (p_frame >= 0) {
			Rect2i source_rect = atlas_source->get_runtime_tile_texture_region(p_atlas_coords, p_frame);
			tex->draw_rect_region(p_canvas_item, dest_rect, source_rect, modulate, transpose, p_tile_set->is_uv_clipping());
		} else if (atlas_source->get_tile_animation_frames_count(p_atlas_coords) == 1) {
			Rect2i source_rect = atlas_source->get_runtime_tile_texture_region(p_atlas_coords, 0);
			tex->draw_rect_region(p_canvas_item, dest_rect, source_rect, modulate, transpose, p_tile_set->is_uv_clipping());
		} else {
			real_t speed = atlas_source->get_tile_animation_speed(p_atlas_coords);
			real_t animation_duration = atlas_source->get_tile_animation_total_duration(p_atlas_coords) / speed;
			real_t time = 0.0;
			for (int frame = 0; frame < atlas_source->get_tile_animation_frames_count(p_atlas_coords); frame++) {
				real_t frame_duration = atlas_source->get_tile_animation_frame_duration(p_atlas_coords, frame) / speed;
				RenderingServer::get_singleton()->canvas_item_add_animation_slice(p_canvas_item, animation_duration, time, time + frame_duration, p_animation_offset);
				Rect2i source_rect = atlas_source->get_runtime_tile_texture_region(p_atlas_coords, frame);