I also completely agree with #1. I hadn't realized you could trigger on more than one criteria. In practice, I'm always triggering a particular output on a single criteria, and as you were suggesting, I use a second output if I want a different trigger.
I strongly disagree with #2, deprecating wall_dt. I do so for one very particular use case, and as Geoff was guessing, it has to do with supercomputers and hard wall times. The wall_dt is incredibly useful when checkpointing. With a wall_dt criteria for checkpoints, I can ensure that no more than a given tolerable amount of wall time is lost in a crash, and I can also ensure that the last output of a normal run will be sufficiently close to the end wall time.
I typically do wall_dt=3600 for 24 hour runs, and even that is a bit of overkill. A wall_dt criteria is vastly preferable to a sim_dt or iteration criteria for checkpointing, both of which tend to make way too many checkpoints early in a run, and too few later when the dynamics are interesting and the computation is more demanding (e.g., getting through the transient), and where big runs can be particularly vulnerable to cluster failure.
With wall_dt for checkpointing, the write index issue is ameliorated in that we're typically explicitly specifying the restart file, and we pick the index out directly during the restart; I can see that it could complicate determination of write indexing for other output files that chose to use wall_dt... but I think that edge case would fall to the user to sort out.
Those are my thoughts. It would be a huge boon to have determinable write indexing for the restarts.