So let me back up a step and talk about what's not working in my home. I've got two Apple Airport Extremes (the most recent 802.11ac version). One is upstairs, in a corner closet, where all the home wiring comes together and acts as my router/gateway/NAT box. I've got a hardwired Ethernet cable going from that down to my home theater, in the opposite corner of the house. The second Airport is there, next to the television, acting as a dumb switch for all the home theater gear, and bathing the area in front of the TV in WiFi.

My observation is that 2.4GHz does penetrate the whole house, but 5GHz doesn't get anywhere close to this. Since we tend to use our devices while sitting around the TV, it's therefore really important to have the base station right next to the TV.

What will happen with my Android phone (Nexus 5 running the latest CyanogenMod 12.1) is that I might be upstairs and it will be latched onto that base station. Then I head downstairs and I'm sitting next to the TV. It's still desperately clinging to the upstairs base station, even though it has a much better base station sitting just feet away. If I disable and reenable WiFi, it will only then notice it's got a stronger alternative and latch onto the adjacent base station.

(They're configured with the same SSID, same WPA2 credentials, etc.)

At least at the TCP/IP layer, my phone will maintain the same IP address no matter where it's connected, since the downstairs AP isn't running any sort of NAT -- it's configured to be just a dumb switch -- so if my phone would only switch APs, then there would hypothetically be no application-layer disruptions of service.

Based on this, I've (perhaps erroneously) concluded that my problem is that my base stations need to be more engaged in managing my phone. I'd like the downstairs AP to see me and say "hey, this device needs to be paired with me, not the AP upstairs". Then they'd send me the magic WiFi packets to kick me off and make me rejoin the network.

Right... given all that, the question is whether my problem is that Android is just being dumb or whether I need "zero handoff roaming" or "seamless roaming" or something else entirely.