Sharing a HD44870 display between multiple controllers
Should the approach described above be effective in performing switching?


Yes, this is exactly how I would do this, but maybe with different IC (see next entry)


Are there any existing devices designed to achieve this?


74HC367 is good, but uni-directional. Some devices may require status readback. You can tell by seeing if R/W pin on the LCD ever goes to 1. If it does, you want to use bidirectional switch, like CD4066. Each of them is only 4 channels, so you may want to get two. 


Are there any Arduino libraries that may achieve this?


Not that I know of -- regular libraries should work, as long as the switch is correct.


Could the switching cause issues with respect to corruption of commands?


Yes. There are two possibilities -- one is that extra parts (switch, wiring) will introduce electrical noise. You will need the scope to debug this. But normally, the devices are made fairly robust, so at least at room temperature, everything is likely to work.

The second possible problem is display setup. For example, if devices set LCD to 8 bit mode, but Arduino resets it to 4 bit mode, things are not likely to work. Or device might expect certain entry mode, CGRAM contents, or cursor position -- and your Arduino resets it.

Either way, you want to debug this one step at a time.


Unplug Arduino, just leave the buffers. Hard-wire buffers to be enabled. Make sure device can display things.
Plug Ardudino, but put a program which disables all the pins and always puts device in control. Make sure device can display things.
This will catch things like bad enable polarity, or bad line state while your Arduino is in bootloader. Unplug PC and reboot device a couple of times and make sure it works reliably.
Only then enable your library. Do it one function at a time.