Pathfinding up to an obstacle

About ignoring the buildings altogether: the buildings are square-ish. This results in units pathing perpendicular to that surface getting stuck.

I still am searching for a way to implement any of the three options in the OP.