With indirect indexes, since you don't need to insert a tid, you can just "insert on conflict do nothing" on the index.
Would that work with non-unique indexes? Anyways, the point I was trying to make is that there are a similar technical challenges and we could solve it for WARM as well with your work for finding conflicting <key, tid> pairs and then not doing inserts. My thinking currently is that it will lead to other challenges, especially around vacuum, but I could be wrong.
What I tried to do with initial WARM patch is to show significant improvement even with just 50% WARM updates, yet keep the patch simple. But there are of course several things we can do to improve it further and support other index types.