### Godot version

4.0.beta13

### System information

Linux Vulkan (but issue is renderer indepenent)

### Issue description

It looks like `PackedColorArray` (and possibly other packed arrays) properties don't get copied deeply enough when doing "make unique" (even recursive, though this shouldn't matter as these aren't subresources).

A project save/reload makes this visible, and also returns the behavior to expected from then on (until you try to do the same thing again, that is).

See reproduction steps below.

Edit: I'm actually unsure this is a problem with these types of properties *in general* or just when they are shader properties. I didn't assume this would make a difference, but couldn't find any other classes taking these, to test.

### Steps to reproduce

- Uncompress and open the project from repro8.zip

![repro8-a](https://user-images.githubusercontent.com/43048142/213869943-7cf9dddb-cdb2-4632-816a-58aeb8582f1c.png)

- Duplicate the "Label" node
- Go to "Material", do "Make Unique"  on the ShaderMaterial (you can choose recursive, it won't make a difference)
- Change the colors on the duplicated material. So far so good!

![repro8-b](https://user-images.githubusercontent.com/43048142/213869961-faeb3f14-6d99-40b2-b2ae-3a9c74f0a0b7.png)

- Now, save and reload the project.
- Oops! The original label has the same colors as the duplicated and modified one now, as if unique-ification never happened.

![repro8-c](https://user-images.githubusercontent.com/43048142/213869997-d234b149-9005-4acd-9f6c-b3851fec9c79.png)

- Change the colors on the duplicated material again.
- Save, and reload the project again.

![repro8-d](https://user-images.githubusercontent.com/43048142/213870009-306e2025-c054-42aa-81ba-2b299d799853.png)


- No unexpected changes. Everything is fine from now on.

### Minimal reproduction project

[repro8.zip](https://github.com/godotengine/godot/files/10472283/repro8.zip)

ClassDB::bind_method(D_METHOD("set_path", "path"), &Resource::_set_path);
	ClassDB::bind_method(D_METHOD("take_over_path", "path"), &Resource::_take_over_path);
	ClassDB::bind_method(D_METHOD("get_path"), &Resource::get_path);
	ClassDB::bind_method(D_METHOD("set_name", "name"), &Resource::set_name);
	ClassDB::bind_method(D_METHOD("get_name"), &Resource::get_name);
	ClassDB::bind_method(D_METHOD("get_rid"), &Resource::get_rid);
	ClassDB::bind_method(D_METHOD("set_local_to_scene", "enable"), &Resource::set_local_to_scene);
	ClassDB::bind_method(D_METHOD("is_local_to_scene"), &Resource::is_local_to_scene);
	ClassDB::bind_method(D_METHOD("get_local_scene"), &Resource::get_local_scene);
	ClassDB::bind_method(D_METHOD("setup_local_to_scene"), &Resource::setup_local_to_scene);
	ClassDB::bind_method(D_METHOD("emit_changed"), &Resource::emit_changed);
	ClassDB::bind_method(D_METHOD("duplicate", "subresources"), &Resource::duplicate, DEFVAL(false));
	ADD_SIGNAL(MethodInfo("changed"));
	ADD_SIGNAL(MethodInfo("setup_local_to_scene_requested"));
	ADD_GROUP("Resource", "resource_");
	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "resource_local_to_scene"), "set_local_to_scene", "is_local_to_scene");
	ADD_PROPERTY(PropertyInfo(Variant::STRING, "resource_path", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_path", "get_path");
	ADD_PROPERTY(PropertyInfo(Variant::STRING, "resource_name"), "set_name", "get_name");
	MethodInfo get_rid_bind("_get_rid");
	get_rid_bind.return_val.type = Variant::RID;
	::ClassDB::add_virtual_method(get_class_static(), get_rid_bind, true, Vector<String>(), true);
}
Resource::Resource() :