Optimal Way to make sure characters cannot walk through stationary NPCs?

Hello,
The behavior I’m trying to achieve is that in turn-based combat, I don’t want RVO to move enemy characters out of the way and I don’t want nodes beneath character to be traversible.

So, what I’ve done so far is. When the character is stationary I’m running this code to get nodes beneath the character and I’m setting the walkable value to false. like:
void BlockTagsBelowPlayer()
{
BlockedNodes.Clear();
GraphNode _Centernode = AstarPath.active.GetNearest(transform.position).node;
List _Nodes = Pathfinding.PathUtilities.BFS(_Centernode, NodeBlockBreadth);
foreach (var _Node in _Nodes)
{
if (MathHelper.CompareVector3Distance((Vector3)_Node.position, transform.position, ComparisonTypeFullEnum.LessThan, NodeBlockRadius, false, 0))
{
BlockedNodes.Add(_Node);
_Node.Walkable = false;
}
}
}

and before the character moves again, I’m setting nodes to be walkable.
I’m also setting RVO as locked/Unlocked.

But I have doubts about whether this is the best solution.

  1. Am I using the best way to get nodes in radius or is there a simpler built-in function?
  2. Is there any overhead to setting Walkable as false? Am I better off with changing tags or setting custom tags, or using custom Itraversible functionality?
  3. This is a bit of an offtopic, but would it be more performant if I used component that marks nodes as unwalkable, over using the navmesh cutter where I don’t need the shape control navmesh cutter gives me?

Thanks