I'll keep plugging away at this. Thanks!
There are several debugging techniques that need to be executed. I would recommend you instantiate the hierarchy interactively and examine the RAM in use. Load a single tile with varying sizes based on the number of processors, and see how many fields you can load before it dies. You should additionally consider using guppy to debug the memory. I believe fixing this problem will require an engaged approach. Until we can figure out where the memory is going, I don't think we can really fix it.
Your statement that it did not die during hierarchy instantiation is upsetting to me. Previously, you said it died here:
self.gridTree = [  for i in range(self.num_grids)]
This happens during hierarchy instantiation. Can you please send the entire traceback from this crash? If it did NOT occur during hierarchy instantiation, but instead somewhere else, then we have an interesting problem.