I had not a refund situation but a reimbursement situation and it did indeed take BA a long time to sort it (maybe 8-12 weeks) but they did in the end. There was also radio silence on their part during the process (because we know how good BA is at proactive communication about such things…) but I have some confidence they will make good in the end. Had a similar issue for something smaller with KLM a couple years back, and although not on a satisfactory timeframe, they made right for the out of pocket.
All that being said, I’d certainly open a dispute with the bank card that was not refunded, specifying the OP cancelled the trip according to the carrier’s ticket policy. That bank will probably ask for some documentation, which in this case could include that the charges were split across two cards, and the cancellation fee was already deducted from the second card, so a full refund back to the first card is appropriate. I don’t bank in the UK, only the US, but once you open a dispute it’s up to BA to answer the dispute. If they don’t within, I think, 30 or so days (maybe it’s more) then the bank will automatically settle in their client’s favor and revert the charge. There may be a caveat that if further evidence is provided by BA (not likely in this case) they could change their decision about it.
But in broad terms, in the US and most civilised countries, if you document what happened, which it seems the OP can do, then the bank sticks to their side and the onus is on BA to prove why the dispute is invalid. I don’t think DOT really gets involved in such matters since it’s between the airline, the OP and the OP’s bank. The OP’s bank has a certain duty to their client here, and should probably be able to sort things out unless BA somehow claims that no refund was due or that the flight was actually used.
An afterthought here, but is it possible the second charge (on the second card) duplicated some cash fare component that had already been paid in the first transaction? If so then the bank card dispute can be “I was charged twice for the same purchase” in which case BA would still have to prove why both charges were not only valid but not refundable under fare rules.