Location-based mailing addresses suck

The lovely thing about email is that it works no matter where you are. Email addresses are tied to people, not locations. This makes your email address a convenient globally-unique identifier, since it follows you even if you move across the country.

It's high time that snail mail addresses worked the same way. When you send a letter or a package, you're sending it to a person, not a location. You don't care where it goes, you just care that it makes it into the hands of the intended recipient. Street addresses are great when you're giving someone directions to a party, but they're suboptimal when used as mailing addresses.

As someone who tends to move about once a year on average, I've begun to dread changing my address in a hundred different places almost as much as I dread packing and lifting furniture. I invariably forget to update it somewhere important, the USPS invariably continues to deliver the occasional important piece of mail to my old address instead of forwarding it to the new address, and by the time I've finally got everything sorted out, I've moved again.

What I want is a single, unchanging, globally unique identifier that will serve as a pointer to my current physical address. It would rock if I could use my email address or even OpenID for this. The USPS would maintain a central database mapping unique IDs to street addresses and would provide a simple REST API to allow authorized consumers (such as UPS, FedEx, etc.) to retrieve the current street address for any given ID.

Never again would I have to update my address in a million different places. I'd just log into usps.com, change my address there, and all my mail would be delivered to the new address automatically from that point forward. In addition to making things more convenient for me, this would also save the postal service huge amounts of time and money by eliminating the need for temporary change-of-address forwarding and drastically reducing the amount of misdelivered mail that gets returned to sender.

Why hasn't this been done already?