Hi James,
I did a lot of work with the w5100 part 6 years ago (so my memory's not perfect) but I was able to find my sample PIC C code AND hardcopy of the data sheet with all of my notes on it!
I used the w5100 as 4 virtual serial ports in interrupt mode. You are right, it can generate interrupts on a variety of conditions, but you cannot mask them so you only get the ones you want. Still, I don't think this too is a serious problem and is still a lot better than polling.
In my interrupt service routine, I check the SOCK_IR register (per socket) for the following conditions:
TIMEOUT, RECV, DISCCON and CON.
This checking should be relatively quick: a little code and a few SPI transactions with the v5100 to read and clear the per socket interrupt registers... I remember spending a lot of time understanding when interrupts were generated, especially for received data.
I don't see a problem with the sequence you describe above. The only change I would make is I would clear the set interrupt flags on every interrupt, not near the end of the loop as you describe above.
I had a lot of fun with this part but now I have to ask if it still makes sense. The w5100, cpu, (and storage?) combination may cost about the same as a Raspberry Pi. I guess it depends on what other h/w interfacing you're doing.
Good luck, and Happy Thanksgiving,
Michael Jamet