Should be easy: the tissue addon supports multiple components to be used where they are assigned according to the face’s material…and you can randomize the material assignment with geonodes:
Edit: so basically one starts with one tilable component and then generates variants by changing only the mesh in the middle of the tile, leaving the boundary geometry alone…