Amount of time of "on hold" tickets

Amount of time of "on hold" tickets

Situation: My company wants to reward a team for not leaving tickets open for too long. Every time an On hold ticket gets answered by a customer, it goes back to open; one of the agents answers back and changes its status to On hold again.

So we are trying to know the exact amount of time each ticket is under "on hold" status versus "open" status and use this value to see if they achieve their objectives. 

We tried using reports for this matter but surprisingly, there is no way to simply know the "total amount of on hold time" for a ticket. It's something quite simple in my opinion and I'm surprised it's not there. 

We tried controlling this using the "total response time in business hours" - "Resolution time in business hours" but the data we are getting is not correct because it takes into account responses (duh) instead of status changes... which can be accurate at times and very innacurate in certain circumstances.

I really find it strange that noone had this need of exactly knowing the amount of time each ticket is under a specific status. If so, how did you resolve this?