I managed to cram it all into a layout the same size as the Adafruit Ethernet FeatherWing!
I had to go to a 4-layer board with 4 mil trace/spacing, 0.2mm minimum drill and 0402 size components to make everything fit. But that's OK, there isn't anything bleeding edge about it that board and assembly houses would have trouble with nowadays.
I managed to pretty much keep the same functionality as the Adafruit Ethernet FeatherWing. It uses the same SPI signals, with an option to cut SJ1 if it's necessary to move the chip select to a different pin. CS, RST and IRQ are still available, but they are on surface pads instead of through-hole. One thing I didn't keep is the mode selection solder jumpers, but I don't think that's a big loss. The WIZ5500 will just auto-negotiate the correct speed and duplex settings.
I unfortunately did not find the space to add a 24AA02E48 chip to solve the issue of having to get your own (or make up your own) MAC address. It's the same as the Adafruit Ethernet FeatherWing in that respect as well. :) It's unfortunate the Feather spec doesn't integrate I2C pull-ups on the main board but they are expected to be on the FeatherWings (wrong in my opinion). Maybe I would have stood a chance if I didn't also have to add the pull-up resistors. Still, it would be tough no matter what, due to the location of the I2C pins next to the Ethernet jack.
I managed to keep reasonable isolation between the local power and the remote PoE power. I'm not going to make any claims about how much voltage it can withstand, but the Ethernet side is completely isolated from local ground and power.
I have uploaded the schematic so you can see what's going on. This is the first time I've used the TPS23758 PoE chip in a project so it's entirely possible I screwed something up. PCBs are on order with JLCPCB, so we'll find out if it actually works after I get the boards and build up some prototypes! :)