oosyrag haha, that's funny because I kept working on it as well.
I ended up leveraging your Overlapping at Offset and made a "ruleset" with a priority.
When hitting UP ARROW one space up is top priority, 2 spaces up next etc.. 3rd priority it doesn't matter you can check right or left first. I'm not entirely sure it works as expected. At first I had immediate right/left the 2nd priority and sometimes I would get stuck and not be able to get to a piece. That seems to have been fixed by giving two spaces away 2nd priority. but still needs more testing!
I only check 9 spaces since there should never bee that many empty spaces - but it makes it limited since you can't leverage the code for a bigger board or less pieces.
here's the code..really long and not very efficient.. there's probably a more stream line way of doing it!