These days I have been playing with uIP and have found it to be quite powerful and stable. The
avr-uip project has ported it to AVR.
In a couple hours, I was able to get a telnet server up and running and adding my own commands. In a few more hours, I had a wget implementation working, pulling down files from websites at 180kbytes/sec. Not rocket fast, but great for a constrained MCU. Also it has "protosockets", so it should be able to implement higher-level protocols such as whatever you want to do with a "TCP Server".
The downside is that it is not compatible with the Arduino IDE, and it's pretty arcane. So for any kind of newbie, I say stick to the official Ethernet boards.
Also today I stumbled across
NanodeUIP which looks to be a port of uIP to work with Nanode. Nanode is an Arduino clone plus an ENC28J60 ethernet in one, so it should be compatible with anyone else's EtherShields based on that chip. Not sure how far along NanodeUIP is, or how it deals with the uIP configuration tradeoffs. It's certainly worth a look, though.