That is so frustrating! So sorry you’ve had this.
It’s good that you bought it with a credit card as you can, as a last resort, get your credit card to refund you and go after Expedia et al themselves.
However, it’s quite right to work with Expedia direct as they were the ones you dealt with in the first place. It may be time to write to the CEO (copying in Customer Service) and insisting that the company refund you and then get the money back from BA.
I’m shocked at BA’s behaviour – although I know they are dealing with a lot at the moment – and I think it’s worth persisting with BA. However, as it was Expedia who took the booking originally, they should take responsibility here.
I will speak to a travel expert about this and add another reply later.