Você pode usar uma restrição de exclusão que requer apenas um único índice:
alter table transaction_links
add constraint check_tx
exclude using gist ( (array[send_id, receive_id]) with &&);
O
&&
operador é o operador "overlaps" para arrays - que significa "ter elementos em comum, independentemente da ordem dos elementos no array. Neste caso a restrição impede a inserção de qualquer linha onde qualquer valor de (send_id, receive_id)
aparece em alguma outra linha da tabela (independentemente da coluna). No entanto, você precisa do intarray extensão para isso.
Exemplo on-line:https://rextester.com/QOYS23482