While testing I had a lot of building positions units can't reach, so the script uses the _timeout. This keeps the skript running but is not so nice. Doing some changes seems to solve the problem.
waitUntil {moveToCompleted _unit || moveToFailed _unit || !alive _unit || _timeout < time [b][color="#FF0000"]|| _unit distance (_house buildingPos _currentBuildingPos) <= 2.5[/color][/b]};
The unit still move direct to, or if not possible close to the position, and moves on without using timeout and the setpos after that. I only testet the distance of 2.5 m. Maybe a other distance is better.
P.S. Nice script.