Don't use separate surfaces for a tiled surface. Very very slow.
Whoops, I didn't notice that your mesh is a grid of tiles. Yeah, too many surfaces is bad.
Your thought about moving UVs is the way to do it, and BlackD pointed you to the relevant command. And, as octothorpe points out, you need to ensure the tiles have discontinuous UVs for this to work. Although not the only way, breaking the mesh into separated (but paradoxically still combined) polygons is one way. If you are using 3D Studio Max the fastest way to assign discontinuous UVs to a grid is using the UV Map modifier set to Face mapping, although breaking apart the polygons would probably make things easier to code (ie. it'll be simpler to determine which UVs are associated with which polygons.)