Cut mesh along a set of 20 planes
Having done this for 3D printing before, I can admit it's an annoying problem. Admittedly, I did so through booleans, and that was a complicated process. Here is a workflow adapted to the bisect tool:
Bisect Tool Method


Join the objects as one. This will be necessary in any method.
Bisect while in edit mode. Check the fill box to fill in the mesh where you are cutting it.
Separate the cut mesh.
(Optional) The other side of the mesh needs to have its faces filled too. Unfortunately, the bisect tool doesn't provide for that. Depending on the geometry, this may be easy to do by just selecting the edge to fill and pressing F (or using the menu). Another solution would be to duplicate the mesh after the bisect operation, and delete opposing sides of the mesh on each duplicate (so each duplicate will keep its fill where it was bisected).

Boolean Method
This involves slicing with a boolean cube that has been flattened.


The objects will need to be joined as before. Add in a cube, flatten it, and replicate it with the array modifier, spacing it out as large as your bed is.
Apply the boolean modifier.
After this, it will of course be possible to separate the mesh into different objects for the different layers as before. Use L to select linked parts of the mesh and P to separate those mesh areas into a new mesh object.

In this situation, the boolean operator does require geometry with volume, so the accuracy of this method depends on how thin your cube is.