Thanks to this marketplace thread: wip-stochastic-height-blending-node-for-material-graph-never-see-tiling-textures-again I found out about this paper: Procedural Stochastic Textures by Tiling and Blending.
I implemented the tiling method shown in the paper (the main point of the paper is actually some kind of "Histogram-preserving blending" but I wasn't interested in that part since I knew I could use my existing height information for blending), I wasn't entirely satisfied because I couldn't manipulate the individual texture samples easily (like rotate, mirror or scale them on a per tile basis for additional randomization). I now implemented a different a solution based on two offset square tiles + and a third rotated by 45°. The function is written with my packed landscape textures in mind (two RGBA textures one with color and roughness and the other with two channel normal, AO and height), the function is commented and changing it for different texture setups shouldn't be difficult. If you are changing to a different texture setup there are some specifics in the function regarding swapping/flipping some channels of the normal map for rotation and mirroring which you have to watch out for.
It works very well for organic textures, for something like a brig wall probably not so much. (Maybe if the offsets would be modified so that they happen at fixed steps to match the size of the brigs or something, but I don't think that it is the best solution for those cases.)
Default texture:
Click image for larger version  Name:	witchtiled_defaulttiling0.jpg Views:	1 Size:	170.4 KB ID:	1603515
Click image for larger version  Name:	witchtiled_randomtiling1.jpg Views:	1 Size:	162.2 KB ID:	1603517
Debug views showing how the tiles are composed together:
Click image for larger version  Name:	witchtiled_debugtiling0.jpg Views:	1 Size:	173.5 KB ID:	1603514
Click image for larger version  Name:	witchtiled_debugtiling1.jpg Views:	1 Size:	405.2 KB ID:	1603516
Depending on the value you set for "tileBlendWeight" the influence between the tiling pattern against the textures height map can be changed with lower values leading to a stronger randomized effect, though it will also start to heavily weight towards the heigher areas in your height map. The other parameters should be easy to figure out especially if you utilize the debug view.
The function was written for version 4.22.0 ( Which finally has a RGBA output on texture samplers and I used it, so no idea if that is going to break in earlier Unreal versions).
If you want to try it, just copy the text in the "randomizedTiledSampling.txt" file into a new function (delete the default output node first).
An example project with a texture and an optimized material set up can be found here:
Edit: There is one connection going directly into "texcoord" which should be connected to the respective "function input" instead.
Attached Files