Eh, multiple APs and roaming being awful isn't just a matter of shitty placement and bad wireless backhaul, it's also client side software. I have two APs on opposite ends of my house and my phone tries to hang on to whatever AP its connected to far longer than it should when moving around the house. My APs are placed correctly, and support 802.11r, yet my phone and most other devices don't try to roam until far, far past the point they should have switched to the other AP.
The design of roaming being largely client initiated means roaming doesn't really work how people intuitively think it should, because at least every device I've ever seen seems to be programmed to aggressively cling to a single AP.
You may need a third access point in the middle of the house then which would enable you to further reduce tx power on the access points while maintaining good reception of client transmissions by the APs, as clients won't roam unless the other access point is of a sufficiently better signal strength. With only 2 access points the signal level in the middle of the house may be too low for either AP to maintain good reception. As always it depends on the materials in the walls, the placement of large metal obstacles like ductwork or appliances, the antenna orientation on the access points.... You would have to measure the signal levels and build up a heat map to figure that out.
Of course with 3 APs instead of 2 the best layout is different.
People are almost always better off more cheap access points than fewer expensive access points, but that's not how most regular folk reason.
Have you tried turning down the tx power on your APs? It will help your devices decide to roam, and it may not actually reduce your effective range, because often times effective range is limited by tx power on the client more than the AP.
I have, doesn't really help very much unfortunately. Setting an RSSI threshold on the AP can also help devices roam, but its hard to set it at a level that works for all devices (since different devices have different sensitivities so an RSSI threshold that works well for my phone might cause some other device to constantly get dropped).
The design of roaming being largely client initiated means roaming doesn't really work how people intuitively think it should, because at least every device I've ever seen seems to be programmed to aggressively cling to a single AP.