autodetect ethernet shield

If you are going to all that trouble, then assign a static ip and read it. Something like this:

IPAddress ip(192,168,0,2);

Ethernet.begin(mac, ip);

if(Ethernet.localIP() == ip) Serial.println("shield present");
else Serial.println("no shield");

If it returns 0.0.0.0, then there is no ethernet shield. That will be immediate. No waiting.