Ethernet2 DHCP not working

The examples with the Ethernet2 library all still use the form of 'begin' that require the MAC address to be supplied. I'm trying to avoid that so I can run multiple devices without having to hard code the MAC and IP addresses for every one. My shield has (or is supposed to have 'cos it's printed on a label on the board) its unique mac built in.

That said, even supplying the MAC address to .begin(mac) doesn't work. It returns very quickly and a call to Ethernet.locaIP() returns an IP address which curiously matches the first four bytes of the mac address.

I suspect it's a problem accessing the W5500 registers but I don't yet know enough about the overall architecture to comment. Also, if that is the problem, how does it manage to operate when I don't try to use DHCP?

Oh for a source code debugger