The longer you sit and think the more ideas come to mind
Why not just create 2 custom fields for each Stage .. and then in the stage entry procedure write the date/time to one , and the Stage Exit procedure write the date/time to the other.
Then you can build reports etc that can show the duration by calculating the date/time difference between the 2 fields