As far as I understand there is no such thing as a "concave hull", as this would degenerate essentially to the union with a tiny connection tree between the loose parts. But maybe what you could use is the union of the convex hulls of smaller subsets, e.g. of the straight rows of cylinders, in order to get a closer "shell" around the cells.

Yes, the idea of combining the shell from outer hexagons seems nice...

As for your code itself, I admit that I have not tried understand it completely. I do like the idea with the drawHoles() iterator. However,
do you know that if you use variables starting with $ (e.g. $col, $row)they can be accessed by the children(). This would allow you to make a much leaner iterator and access e.g. the cell position and contents of the corresponding manArr entry inside the child code.
With drawHoles() being a simple iterator you could easily split the problem into components like outer shell, inner cavity, cell cylinders, etc.

actually someone just mentioned this to me, i was looking or something like this, after i saw [github.com] library which initially looked like doing a lof of this things i'm doing .. i knew it would make things simpler this way..