Very interesting concept, I just ran into this lin while wasting some personal time :)
I have an addon called Hermes where I had to solve this problem, unfortunately my approach won't work for you directly. But maybe it'll help your cause (because a library that handles this well would be very valuable)
Hermes tracks cooldowns between players using the addon comm channel. I have senders (who send their cooldown information) and receivers (who elect to recieve the cooldown information).
In the sender code, I setup a timer that fires every 1 second. When the timer is up, every spell the sender is "sending" is inspected via the spellbook and it's current cooldown value (if on cooldown) is gathered.
The latest cooldown value is then compared to the prior cooldown value to determine if new cooldown messages need to be sent to the receivers:
1. If the prior cooldown was nil and the new one isn't, then a message needs to be sent.
2. If the prior cooldown is not nil, and the new one is nil, then nothing needs to be sent (it expired naturally).
3. If the prior cooldown is not nil, and the new one is not nil, then some extra handling takes place:
3a) If the new cooldown is greater than the old cooldown, then something caused the cooldown to increase in value, and a message is sent.
3b) If the new cooldown is less than the old cooldown plus a threshold value (which is currently 5 times the timer duration, or 5 seconds in this case), then something caused the cooldown to decrease in value substantially, and a message is sent.
So I basically loop through all spells every 1 second to update cooldown status and fire off messages when it looks like it's value changed.
I'd think you would have to use similar (and it's very simple) logic in your lib while monitoring combatlog events.