Spot on. Domestic upgrades are in inventory/fare bucket "O" and while the physical seat is the same as what a paying customer would get, it's not the same allocation. It's quite common for there to be A/F bucket seats out there-- those are the booking classes for paid First class-- but not any inventory in O. You have to wait till the inventory control people decide to release the seats into O bucket before you can upgrade.
Empty F seat =/= Seat to be given for upgrade