Image Texturing - Using cycle's nodes to scale image texture and randomly rotate them
I just faced a similar issue, so I took a look at your file.  In the Tile-able image texture frame, you start with a Mapping node into a Separate XYZ.  I added the following nodes between them.

This all centers around the Vector Rotate node.  To explain, we start by taking the Vector output from your Mapping node into a Voronoi Texture with a Scale of 1.  We have to add another Mapping node in between to align the grid with the original output.

Now we can take the Color output and multiply it by some number and throw it into the Angle input of the Vector Rotate node, and we can take Position and put it into the Center input.  However, we must include yet another Mapping node in between to correct the transformation we made previously.  If we don't, the locations are all off.

This does introduce a slight issue.  The corners of the repeated image will show up as in the following image.

So you may have wondered what this mysterious noodle coming from the Distance output is.  I used this with a Color Ramp set to Constant to generate a mask that we can subtract out of your image and solve for these corners.


Your original Mapping node can be used as a control for x &amp; Y Location, Z Rotation, and X &amp; Y Scale.