Honestly I think it's fine just to take a rough approximation of average move times (say, 5 seconds) and deduct that from the timer for every move used. And then there can be research done on the signficantly smaller pool of screen effects (item use animation, lower-screen text, ability text, pokéball throw/withdraw times, MEvo/form change animation, stat rise/drop etc.) and the respective times can be deducted then too. Z moves can be accounted for with research 'cause there probably aren't gonna be that many to research and they have super long animations that would need to be accounted for.
Like, I think following the cartridge to a T is unrealistic (this is basically one of the biggest gripes afaik), but I do think that implementing limitations that they use on cart (game timer (60 min in challenge; 15 min in battle spot and sanctioned tours, turn timer (90s in challenge; 45s in battle spot and sanctioned tours), team order timer (90s for both afaik)) is important to not only prevent people deliberately schedule stalling their opponents but also to make Showdown a reasonably good resource for practicing playing to a cartridge timer for things like VGC, Battle Spot and other on-cart tours that people host. It also means that there is an objective way to determine a winner in cases like this as opposed to the subjective tie-forcing method which is currently employed because the game looks at a hierarchy to determine the winner once the game timer has expired and the turn's animations have finished (1: most remaining pokemon; 2: remaining team HP % (if 1 is tied); 3: total team hp (if 2 is tied); 4: tie (if 3 is tied)). This prevents matches being "who can keep switching the longest before they need to sleep/go somewhere" because the person on the back foot needs to strive to keep their numbers and team HP % as high as possible to ensure that they have the upper hand when the timer runs out, and it also prevents cases where you have people calling into question whether a tie needs to be forced.
What you need to take into account with this is that it would change the dynamic of simulator-based stall from gen 5 (or whatever gen introduced the timer) onward, but on the flipside is this isn't exactly a bad thing because realistically speaking when you get games that boil down to who has less of a life it loses some of its integrity, moreso when you consider that if it was the same game on cartridge neither player would be able to safely employ such a strategy due to the constant threat of their team % dropping below their opponent's if said opponent chooses to attack. I think that the fact that ABR vs. Tele was able to go on for 7 hours (and, as if that wasn't enough, the fact that it reached a point where ABR was even able to taunt using Tele's schedule as a weapon) says a lot about the fact that an endless system does not work. 7 hours on a single game is just excessive, and it can be used as a tool in the same way that a limited game timer can with time stalling. I'd much rather have people spending 90 seconds on each turn for the sake of getting it closer to a limit of 60 minutes than have people making moves at whatever pace they feel like (whether it be fast or slow) for a non-predetermined amount of time, and while I'm sure some of the Fine Gentlemen™ on this site have so little to their lives that they can spend as much time as they want clicking the same two buttons on repeat until one of them either has to go somewhere or needs to sleep, the fact is that the vast majority do not have this luxury and as such can be abused by people with less busy schedules or by people who's time zones result in the match starting earlier in the day.