Regarding the inoperative seat, as annoying as it is it happens often, let me try and explain.
The seats you reserved are found to be faulty on the previous flight and are logged by the crew, this information electronically is transferred to the ground staff who are responsible for seating and your seats are changed and the faulty seats are blocked out.
On the ground the engineers are able to fix the faults and release the seats to be used, there is no system that looks to see if the seats were previously reserved and by whom.
The fact that you say the seats were used for upgraded customers confirms to me that the seats were released for use nearer to the departure time.
As explained the seats can still be used depending on what is exactly wrong with them, BA and more importantly the Captain would never use a seat that is not passed for customer use.