I squashed the changes I suggested in previous emails, Ashwin's patch, my suggested updates to that patch, and the index order check all into one updated patch attached.
I've updated this patch to make it apply on master cleanly. Thanks to Alvaro for format-patch suggestion.
The first patch in the set adds the speculative wait case discussed above from Ashwin's patch.
The second patch in the set is another suggestion I have. I noticed that the insert-conflict-toast test mentions that it is "not guaranteed to lead to a failed speculative insertion" and, since it seems to be testing the speculative abort but with TOAST tables, I thought it might work to kill that spec file and move that test case into insert-conflict-specconflict so the test can utilize the existing advisory locks being used for the other tests in that file to make it deterministic which session succeeds in inserting the tuple.