The terrain can be absolutely anything, and being 6 or 10 cells away from the castle does not guarantee that there won't be a block further on.
The very definition of whether a block is a block or not is quite complex, not to mention analyzing what exactly is blocked and how it affects the game situation.
This leads to constantly emerging problems and errors.
The option of limiting the value of guards near the road is much simpler, because you just need to check if there is a guard near the road, but there are still technical difficulties with it - in the area I use to shift the guards, there is no value for the guard.