Use MERGE
Seu SQL falha porque 2 chamadas simultâneas sobrepostas e muito próximas obterão "falso" do EXISTS antes que o INSERT aconteça. Então, ambos tentam INSERT e, claro, um falha.
Isso é explicado mais aqui:Selecionar/Inserir versão de um Upsert:existe um padrão de design para alta simultaneidade? Esta resposta é antiga e se aplica antes de MERGE ser adicionado