### Godot version

v4.1.beta.custom_build [72b59325c]

### System information

Windows 10, Vulkan

### Issue description

This has been plaguing me for a while in my main project. I can only partially reproduce it in a MRP:
When placing a binary mesh resource imported from a .glb file into a MeshInstance3D, it will be gone upon restart. It doesn't seem to happen to every resource, but I've had MIs that were fine and then start doing it out of nowhere.
I thought it was going to be related to materials due to things like https://github.com/godotengine/godot/issues/77007 but I can reliably trigger it with the steps listed below.
I have done limited testing on .tres files because I usually use .res for size/performance, but in the MRP .tres doesn't seem to trigger it, so perhaps it doesn't affect those.

Note on the Steps to reproduce: you have to delete the test_cube.res and redo the steps to trigger the bug again, but in my main project the affected resources always disappear.

### Steps to reproduce

1. Double click test_cube.glb
2. Click the mesh (test_cube_Cube_097), set save to file path as: res://test_cube.res
3. Make sure to click the little folder icon and then Save (this seems to make it consistent to proc)
4. Press Reimport
5. Drag the test_cube.res to the Mesh slot of the MeshInstance3D
6. Ctrl+s to save
7. Project -> Reload current project
8. Mesh is no longer in the MeshInstance3D

### Minimal reproduction project

[binary res bug.zip](https://github.com/godotengine/godot/files/11681009/binary.res.bug.zip)
fc.uid = split[2].to_int();
					fc.modification_time = split[3].to_int();
					fc.import_modification_time = split[4].to_int();
					fc.import_valid = split[5].to_int() != 0;
					fc.import_group_file = split[6].strip_edges();
					fc.script_class_name = split[7].get_slice("<>", 0);
					fc.script_class_extends = split[7].get_slice("<>", 1);
					fc.script_class_icon_path = split[7].get_slice("<>", 2);
					String deps = split[8].strip_edges();
					if (deps.length()) {
						Vector<String> dp = deps.split("<>");
						for (int i = 0; i < dp.size(); i++) {
							String path = dp[i];
							fc.deps.push_back(path);
						}
					}
					file_cache[name] = fc;
				}
			}
		}
	}
	String update_cache = EditorPaths::get_singleton()->get_project_settings_dir().path_join("filesystem_update4");
	if (FileAccess::exists(update_cache)) {
		{
			Ref<FileAccess> f2 = FileAccess::open(update_cache, FileAccess::READ);
			String l = f2->get_line().strip_edges();
			while (!l.is_empty()) {
				file_cache.erase(l); 
				l = f2->get_line().strip_edges();
			}