Единственное что я из это для себя понял это то что Тим очень хорошо умеет оптимизировать код и хорошо знаком с хэшами. Возможно это поможет.
Я принципиально не занимаюсь оптимизацией. Лишь иногда правлю что-то, если это вызовет рост скорости на порядки. И кодю на далеко не самом быстром C#. Всё лишь по той причине, что прирост скорости (даже в разы) никак не позволит мне догнать лидеров. А значит надо все усилия направлять на разработку новых алгоритмов, а не на оптимизацию посредственных старых.
Что если взять решение и прокрутить его на несколько градусов вокруг всех трех осей?
В вашем подходе есть один большой плюс - точки в решении переставляются все вместе, что очень хорошо учитывая "их связанность". Но подозреваю, что наш куб, при большом количестве точек, уж очень сильно пересечен плоскостями и любое "шаг влево шаг вправо" для точки вызовет всплеск ошибок. И после поворота её координаты просто некуда будет округлить. Кстати, почему вы хотите "крутить решение на несколько градусов"? Ничто не запрещает его крутить на сколько угодно градусов.