I woke up this morning saying "named pipe".
Some hours of messing around later, I've discovered the fun of blocking. Sure, it's easy enough to modify the current dynamic-texturemapping SaVi to set up and write to a named pipe, but then SaVi blocks forever waiting for Geomview to read from that pipe. Geomview's existing file-handling code would probably just close the pipe even if it managed to read from it once, which isn't likely to happen anyway since it doesn't know it's a pipe. And, of course, I still haven't figured out unique per-instance naming of the file/pipe, either, to allow more than one user to run this simultaneously.
I guess I really do need to modify Geomview as well.