Ok, I think I figured it out and the WA worked fine. Apparently if Remove Curse doesn't actually remove a curse, it's considered a failed cast which can be tracked as a trigger.
For reference, this is ultimately what I made:
Trigger 1: Spell>Action Useable
+Spell: Remove Curse
Trigger 2: Spell>Cooldown Ready Event
+Spell: Remove Curse
+Timed: 8
Trigger 3: Combat Log>Spell>Cast Failed
+Source Unit: Player
+Destination Reaction: Friendly
+Spell Name: Remove Curse
+Timed: 8
The custom trigger is:
Code:
function(trigger)
return trigger[1] and trigger[2] and not trigger[3];
end