Do you have a SD card in the shield's slot?
edit: If that is not the problem, I have a test to determine which side of the SPI bus has the MISO line locked up. That is apparently the problem in your case if the w5100 is getting a static assignment and responds to a ping, but reports 0.0.0.0 as the ip.
If you have a resistor somewhere between 2K and 5K, connect it between D50 and 5v with the ethernet shield disconnected, then run the static IP assignment sketch. If the sketch reports the IP as 255.255.255.255, then the Arduino MISO line is not the problem. If it reports 0.0.0.0, then the problem is on the Arduino, not the ethernet shield
Then connect the ethernet shield again, and connect the same resistor between D50 and 5v. If the sketch reports the ip as 0.0.0.0, then the problem is on the ethernet shield. If it reports 255.255.255.255, then something is wrong with the w5100 MISO line.