For postcode database, unfortunately I cannot help you.
But for Google... You know, you don't have to do this for EVERY postcode EACH time. You can cache the values in your database and do it only once for each new postcode. Although this will take some time, it's possible.
Yeah, it still sucks. But better than nothing.