One option to take care of the status changes and keep track of the time it is 'on the clock' would be to create a "Status Change" table.
You will use native API_AddRecord calls to make status updates, it will create a record, with a specific status.
After the relationship is made you'd need to add a few summary fields to bring the most recent record ID, so when you later push the next "Status Change" button option, it will close out the old record with API_Edit then create another status via API_Add.
There will be several summaries and lookups going back and forth to help total your time, but this will be the cleanest way to do it, and things can get updated with just ONE click, rather than several or relying on messy form rules to start and stop timers.