Ok,
There seem to be some variants of this problem. I've had, and worked around the DNS variant tonight on a hotel wifi in Argentina. I did it by using the static ip workaround setting the DNS 1 server to be the same as the gateway address rather than the DNS IP provided by DHCP, and leaviny DNS 2 blank.
What's interesting though is that I have TWO android devices and the problem and workaround were identical for both. One is an Archos tablet running android 2.2.1, the other an HTC Desire Z running 2.3.3, both with their latest manufacturer firmware. My girlfriend's iphone had no issues with the same WAP.
I believe that this fairly solidly proves that this is an ANDROID issue and not related to specific hardware.
I have also discovered, after playing with the settings some more, that the problem is with only ONE of the specific DNS IPs being supplied by DHCP. I can use the other, manually set on its own, with no problems. The problem IP is 192.168.67.15 - a private range IP, wheras the working one is a 192.14 - ie a public address. I believe this might be the key to getting this resolved if anyone from Google is reading this. The network is 192.168.0.0/24 with a gateway at 192.168.0.1. My subnet mask is definitely set to 255.255.255.0 as well (and the DHCP sets this correctly too) though it seems a possible explanation that android is somehow not using the correct mask for 192.168 networks. In any case it seems to me a strong possibility that android is doing something odd related to private IPs.
I hope this post is useful to anyone experiencing this issue; please please, anyone who can confirm or discount what I've observed here, please share what you found.