This may not be the answer you're looking for, but I'm pretty sure it has to do with how Blender interfaces with the GPU and how the Windows kernel reacts to that. When the OS gets an interrupt requesting the GPU, it's put into a queue until the GPU becomes available. When Blender gets assigned the GPU, it doesn't let go of it for an eternity in processing time... say, 60ms or so. During that time, the Windows Desktop has to wait on Blender before it can update.
You obviously know that the most efficient way to render is by keeping the GPU load as close to 100% for as long as possible. In order to do this and keep the monitor updating the screen, lag is introduced when the GPU becomes unresponsive for short periods of time.
When the driver becomes unresponsive to the Windows kernel (i.e. when Blender is using it)... it must wait until it responds. You can see this when you enable Branched Path Tracing in the Sampling options. If you set the samples too high, the GPU will become unresponsive long enough that Windows will actually reset the GPU driver and crash Blender (the operating system doesn't like when it's not sovereign over the affairs of the PC).
The point is that Windows is monitoring this. When the Titan is your primary display and it goes unresponsive, the OS takes it's cues from that driver for the desktop display. In other words, if Windows can't display the desktop at 60Hz refresh on your primary monitor, then it won't on the others. I'm pretty sure Windows uses a complex queuing system for sending and receiving messages from the display adapters to keep them all in sync.
I don't have multiple monitors but I have multiple GPUs. When I render with the two GPUs that are not hooked to my monitor, I get zero lag, and I'm running Windows 7. You can try using the 770 as your primary and render using the Titan, but if my guess is right, if Windows is using the Titan as a display device, the 770 will also lag.
Maybe someone else will have a more promising answer/solution. It's possible that Microsoft changed the way that it handles multiple displays in version 10, but I have no experience with it.