great to hear you got it working! the matrixset is well-suited for this.
If you want "sets of sets of matrices" :) then a different saved matrixset for each would be good. Though you can make them huge if you want, so you could access indices 0-99, 100-199, etc., all in one big one.
I personally wouldn't use separate patches unless you want them running simultaneously, or if you want ones with different controls. To avoid the dialog box routine you should just be able to give the "read" and "write" messages the filename as the argument, no need for .matrixset extension. So while developing, save your banks, then you can loadbang them in with "read my_set_5" if there's "my_set_5.matrixset" in the patch folder.
For more trickiness with saving and loading, like consecutive filenames, [sprintf] is your friend, as it could replace the "5" in the example above with a generated number.