Hmm. I thought I'd tried that but perhaps I didnt' read the documentation close enough. Even after reading your reply it took me about 20 minutes to realize the subgraph has to have a name prefix of "cluster." And after more digging I see now that cluster=true will do it as well.
It's not exactly what I was hoping for, but is an improvement on the randomization I had going on before!
IIRC, you have the have the cluster prefix and cluster=true to make it work. I also found clusters to be quite tricky to work with (especially when you have an arrow between a regular node and cluster node).
They can be nested.
https://graphviz.org/Gallery/directed/cluster.html
https://github.com/ReneNyffenegger/about-Graphviz/blob/maste...