It seems that a weakness of the Syphon API is that a Server cannot have its context changed, but rather must be completely released and reallocated with a new context. This causes the client to lose the connection, even if the Server name stays the same.
For my project, I modified the Syphon framework code to add the “replaceCGLContext” method as demonstrated by zakk in SyphonInject, and it seems to work perfectly. The advantage of this (as opposed to the other proposed solution, which is for clients to pick up subsequent identical servers) is that it doesn’t require modification to the client code, so it will work with all existing clients.