Update! Solved the problem after reading some documentation and reddit posts. The solution was not using such a small cube (20x20cm) and using a lot of segments (50 on xyz) on a bigger cube. 5 iterations is fine.
Thanks for that Eric, directed me to a very useful code snippet (it renders each face to a buffer and if theres something already rendered it flags it as overlapped). I've known about this method but never had the time or inclination to code it :) test output for my above example 100 by 50 buffer, the uvunwrap modifier…