Oi Bruno, desculpa a demora, mas veja esse exemplo que criei aqui: https://codepen.io/wandersonmaceds/pen/VEZVWB
Bom, eu coloquei todas as imagens com o src normal, mas tem um código js ali que faz o seguinte: captura todas as imagens da página, faz uma requisição assíncrona para cada uma delas, caso a resposta esteja na faixa os 200 (código HTTP de sucesso) então a imagem existe e nada acontece.
Caso a resposta seja outra, bom, ai acontece o replace, eu troco a imagem pra outra da minha preferência.
Não tá fácil de verificar, mas as duas tags imgs possuem o mesmo src, com uma pequena diferença pra simular o problema, a segunda imagem tem [url-errada]
no meio da url pra simular um endereço incorreto onde a imagem não pode ser encontrada, nesse caso o js troca a imagem por outra.
Com certeza esse script tá muito simples e não cobre todos os casos, mas é uma ideia básica. Dependendo do caso, seja melhor uma outra estratégia.