How to offset multiple smoke instances by time?
If you look at the point cache files, the default filename follows the format: [identifier]_[frame]_[index].bphys. Unfortunately, the [frame] in the filename doesn't actually correspond to the cache's actual frame number.

That means, the only way to offset a cache's frames is by parsing the contents of each file (e.g. writing a python script). Apparently, modifying the contents is not that straightforward. This page explains a little (towards the bottom). Glancing at the blender source code, it looks like you'll need to edit the points time, dietime, and lifetime; some cache files may also store the previous cache point's time data too.

If you know C, It may be easier to just write a patch for Blender to add the feature. That way, you can make use of the read/write methods from Blender's source. You could also request the feature; perhaps there is a developer who is familiar with the code who can easily add it.