Those previous and next numbers should indicate the previous and next block size. Instead it is always reporting that the neighbors are short blocks, which means the decoder may use the wrong window or lapping (see the spec for details).
All the information is there to fix this, it only wants someone to do it. This may not be the only problem, but it is definitely one of them.
Well, if anyone wants to fix revorb, the source is available:
http://yirkha.fud.cz/progs/foobar2000/revorb.cpp
And with little modification, it could be compiled outside of Windows.
The way I see it, it would need to buffer a full packet ahead on the input file, and keep track of the size of the previous packet, where applicable. Then it could easily regenerate that information for the output packets.
Hmm...
EDIT: It would be most helpful if you could tell me which structure those previous and next members are a part of. Is it the ogg packet, or is it something specific to Vorbis?
Here's the relevant code from ww2ogg 0.21. Note that this depends on knowing the modes set up for this particular file, the long/short specification is per mode, (vorbis_blockflag) and packets only say what mode they use. As these bits are at the very beginning of a vorbis packet I don't have to deal with parsing the whole packet, I just read the mode bits and insert the window bits if it is a long packet.
Probably should have been more explicit, this code inserts the packet type bit (always 0) and optionally the prev/next window bits into the wwise packet, which misses them entirely. You will want, instead, to replace the window bits (which were always filled in 0 in an older version of ww2ogg).