Vim: tweak GotoOrOpen to better cope with hidden buffers

I was finding that this wasn't working too well in a long-lived Vim
session with many open but hidden buffers.

eg. if I had A, B, C and D in splits:

           |
       A   |   B
           |
  ----------------------
           |
       C   |   D
           |

And had previously opened E through Z, so those buffers were hidden but
not visible anywhere, then trying to open E when the window with B was
in focus would result in splitting that window (via `:sb`):

           |   B
       A   |------------
           |   E
  ----------------------
           |
       C   |   D
           |

Not desired. `bufwinnr` is what we want; it switches us to an existing
window if one exists, but otherwise doesn't, so in the scenario above we
instead wind up with:

           |
       A   |   E
           |
  ----------------------
           |
       C   |   D
           |