When sort is used on really large files, it will automatically attempt to use disk, putting temp files in TMPDIR. This can be really slow.
To overcome the slowdown of disk I/O, perhaps a workaround could be to use mfs or tmpfs, maybe something like:
mkdir /dir
mount -t tmpfs tmpfs /dir
TMPDIR=/dir sort -k2 -k1 -k3 contacts.tsv
TMPDIR=/dir sort -k1 -k2 -k3 contacts.tsv
Personally, I gave up on sort for large files and use k/kdb+. I suspect it is faster for sorting than sort or the Go libraries, but I could be wrong.