First let's clear up some nomenclature inaccuracies...
Your iPhone didn't "pick up" a link-local address from the DHCP server. It assigned itself a private IP based on Automatic Private IP Addressing (APIPA). There's a huge distinction here and is relevant to the problem you are having:
- DHCP hands out IP addresses based on a configured pool of addresses.
- APIPA self assigns an address when, for whatever reason, it doesn't get one from DHCP
So, armed with this knowledge, we know one of two things happened:
- Your DHCP server didn't respond or ignored/denied the request for an address
- Your iPhone didn't request or it rejected/ignored the DHCP offer.
It's entirely possible that the issue is with the DHCP server on your router. It may have been configured for a small amount of leases and at some point you hit the limit (your previous lease was given to another client). You may have also "blocked" your client (iPhone from the DHCP pool). Given that your iPhone is the only device not connecting, it would be beneficial to look at the router's DHCP config to see if you have any limitations or restrictions in place. Restarting it wouldn't hurt, either.
It's also entirely possible that an update or a configuration change has "hosed up" your networking configuration. Usually, forgetting the wireless network and re-connecting will solve the issue.
However, one of the best ways to narrow down the possibilities is to connect it to another network. Take it to your favorite coffee shop, a friends house, or anywhere that has a WiFi network that you can attach to easily. If you can connect there, then you know the problem is with your home setup. If it fails on other networks, you most likely have a hardware issue which means it's time to take it in for service.