What if building ghosts only appear if the worker can reach the building spot in a reasonable number of steps, say, 20 (so if I issue a build command on the other side of the map, the ghost won't appear until I get much closer). Or perhaps show the ghost the whole time, but only make it unwalkable when the worker is close (and has to be able to reach it, ie, not obstructed). If we want to get really advanced, we could even say that units in the area that the building is meant to be built will move out of the way when the ghost is supposed to become unwalkable.