Would be interesting to know how the ore data gets transferred. If its plain nbt data then it will consists of 1 Byte, 1 Short, 3 Integers and a String of 18 Chars plus nbt structure data for every single ore.
Ordering this into lists for network transfer could be more efficient like a group of lists per chunk:
A byte list for "n", a short list for "m" and a integer list for an local block offset which contains the x,y,z coordinates.
This format should be easier to compress for any fast compression lib.
So what do you think Greg?