As to avoiding nodes occupied by other agents or making all the air points inaccessible with AStar there's a method for it.
void set_point_disabled(id: int, disabled: bool = true)
Disables or enables the specified point for pathfinding. Useful for making a temporary obstacle.
It seems to me that it might be OK to have different instances of AStar for types of movement like flying or walking, so you won't have to disable and reenable too many points