Really sorry to hear this OP. I'm due to move in a few weeks and I'm sure I'd be inconsolable waking up in your position today.
My only thought is that exchanging two days or even two weeks ago would unlikely have prevented this. As you say, the buyer's lender raised queries at the 11th hour and didn't release funds which neither you nor your solicitor could have foreseen. Regardless of whether contracts had been exchanged, the buyer just wouldn't have been in a position to complete yesterday without funds which would have stopped you completing on your purchase (assuming you needed your sale to complete before you could go ahead). If contracts had been exchanged then you'd also now be in breach of contract for failing to complete your purchase with responsibility for your seller's costs beginning to accrue until completion finally occurs.
As a lawyer I just couldn't recommend to a client that they exchange on a contract where there's a risk they won't be able to perform, especially where performance relies on the actions of a third party (in this case your buyer and in the buyer's their bank).
I can only imagine that there's been some uncertainty or delay with the buyer's mortgage that they had hoped to resolve on time but which ultimately meant the buyer wasn't in a position to exchange until last minute. Not sure about Covid advice as I'm in Scotland and the conveyancing process is different.
I'm devastated for you. Can't imagine how you're feeling today.
Try not to think the worst though - from what you've said the buyer's lender hasn't pulled the mortgage, they're just asking for more info which will hopefully let them get comfortable and sign off on the mortgage, albeit late and to everyone else's inconvenience. Everyone has invested considerable time and money getting to this point so hopefully everyone is committed enough to wait this one out and you'll have good news shortly. Fingers crossed for you 🤞