How about a single unconstrained text area? Do you really need to break the address up into lots of little bits? If so, why? Because you have different costs / taxes for different states / countries? Fine, have separate fields for those, but otherwise, what's the benefit?