GCC (used by Arduino) seems to be little-endian by default.
And so on...
So, although the processor, being 8 bit, doesn't actually have an endian-ness per se, the compiler does, and that is little-endian.
I have implemented my own _htons() etc functions, and everything is working fine, but it would kind of be nice if the library routines actually did anything.
It works for me using Arduino-1. Are you sure you're importing the correct htonl() ? (should be in Ethernet/util.h I had to add an explicit "#include <util.h>" to the "ChatServer" example that I added your code to to try this out...)
htonl et al should be a part of the standard C libraries. If the right header isn't included it should whinge about "implicit declaration" stuff - which it doesn't - so no header is required.
On a Linux system it relies on the arpa/inet.h header for definitions. Obviously, that doesn't exist on Arduino. Relying on a third party library for the headers seems kind of lame and backwards. Either something in the core library should be supported in the core or it shouldn't exist in the core. It shouldn't be in the core yet rely on an external library to provide definitions for it.