"Protecting Premium"
I once had a chat with a Virgin Captain and he said that BA actually do a fairly good job of "protecting" their premium classes whereas Virgin seem to upgrade everybody. I don't know how true this is but it does make commercial sense. If I knew that there was a realistic chance of a complimentary upgrade, why would I buy a premium ticket?
With regards to the meals, I understand that BA will not upgrade if there is no meal unless it really is an unforeseen situation.