This may sound silly, but as a temporary workaround, can't you:
CVS_RSH=ssh cvs diff >tmp.diff 2>tmp.diff
that ought to open the file twice as separate file descriptors.
The downside is that I/O is now unsynchronized, and lines may be inserted
in the middle of other lines, but nothing should get lost at least.
switching to line buffering should eliminate most of that problem.
this assumes, of course, that is what you're trying to do. There are
other possibilities that you can't control, I know, and doesn't solve
the real problem.