I was able to get this to work, posting here for future reference. From the main brightscript thread, callbacks sent in to observeField aren't invoked. Perhaps this is documented somewhere already. I had to poll the value of the roSGNode field to watch for a change.
Finally, I was somewhat surprised to see roVideoScreen play the video without having to tear down or hide the roSGScreen. And once the roVideoScreen closes, the scene graph is shown again. Hopefully this is behavior I can rely on going forward.