How would I be able to procedurally generate brick tiles like these?
Three ideas, that might help here.


Don't underestimate good lighting. Use HDRIs, to add complex reflections.
Count your brick pattern :). It's 11 bricks high, Running Bond pattern, each brick roughly 1:3 ratio. Read more about the Brick Texture node.
Add depth. Nothing is flat in the real world. Use Bump or Displacement, to make your material feel real.  


This material would look boring as hell without the HDRI lighting.



Count and measure the brick pattern :). It's not totally random, it has some rules.



Use at least a simple Bump map to add depth. While still pretty crude, it's better than nothing.