Take 1 seamless textured plane, and make a large square out of multiple of that 1 texture
You can use two Array Modifiers. One for direction X and one for direction Y. The setup would look something like the following. Note how the values in the green boxes are different. This allows for the object (plane) to be arrayed in multiple directions. Just remember that Array Modifiers utilize local coordinates and you can negatize (did I just invent a word there?) values to have the object array in the opposite direction.



How this modifier stack would look when applied to a cylinder (for clarity, because cylinders are easier to differentiate than planes):



As a last note, you can use a Vector > Mapping node to tile textures on a single plane. See David's answer on How to Make a image repeat in cycles.