w5500 works great, I use it for simple UDP communication between a PC and multiple boards using various pics. I started cutting down the microchip stack (with w5200 plugins) to UDP only, and then gradually redid nearly every part asynchonously using DMA and BEN, while also converting to W5500. This summer we took the first boards into production
I also had the same stack working with pic32mk, but decided not to pursue that platform, so canned it. Currently it is dspic33e MU series only, but in the past I had it working on MC510 and pic24 (the one that came with the original explorer32, I did most of the refactoring on that board) Instead I started with dspic33c, but we got quite busy this year, so I only have a basic two channel (bidi) DMA test there yet.
Below is my flow chart using w5500 register names. Receive and Send packets, and discard is some periodic furthering of the pointers (every 2k). With short paths it is useful to this not too often.
I have 100us wall time for a MU814 for the receive+send trajectories below(iow the moment the W5500 raises an interrupt till the confirmation that the answer has gone out), of which about 10us is actual processing, most of that is protocol decoding of the receive package (multi level select) and construction of a meaningful answer. I mostly work with short packets (5-20 bytes) received and answered.