Solution is still 100 lines, but now it is based on a singular BFS oriented box push algorithm.
Glad this one is over. 150 lines of pure mayhem.