I *think* they can refund one booking and put the charge on another card without having to cancel the booking or lose the voucher. But the only way to know for sure is to call BA an explain that they haven't done as you asked?
There may be a reason why they couldn't but they're the ones to talk to first.