You can create a new random attribute per island using Geometry Nodes. Add a Geometry Nodes modifier to your object.
Use a Mesh Island node (specifically, the Island Index output) and a White Noise node. Plug the result output to the tree output.
You can alternatively use a Random value node and use the mesh island index to stabilize the ID. Then you can play with the seed to get a new random batch of values per island.
In the modifier tab, expand the Output Attributes and type in the name of the attribute. You can choose whatever you want but take care not to overshadow builtins like
In the shader editor, use an Attribute node and type in the exact same attribute name (case sensitive).
Note that the mesh island indices are dependent on the mesh island with the lowest Z axis vertex. So it may not be consistent if you add mesh islands lowest than the lower part of your mesh.
There are shading artifacts when using the White Noise Texture in perspective mode. It's caused by the White Noise node in the shader editor but the Geometry Nodes solution still applies.
This setup should get rid of the artifacts and give random colors :
Or use a Math node set to Snap. I guess it comes from a floating point precision error.