The policy was essentially "you have until the teacher/TA needs to go home" and given everyone in university is always swamped with work they were generally willing to stick around and get their own work done until it got super late and even then, even if you were the last test taker they'd generally negotiate a final 10-20 minutes with heads up so you could do your best to wrap up even if you weren't done.
But generally the rule is ~2x test time. The extended test time accomodation is normally listed as "double time" in my experience even if profs were generally willing to give you more than 2x time if you were still making meaningful progress.
I suspect the reason why it does not occur more commonly is simply because of the costs of running such a long exam.
It's unfortunately not practical for every class to do when everyone's taking all of their finals in the same week. There will be inevitable scheduling collisions: hence the need for timed slots and individual exceptions at alternative times and locations. If you can think of a systemic solution to that, I'm all ears. (Yeah: get rid of final exams. In theory I like that idea, too. AI is kinda pushing educators in the opposite direction at the moment.)
Be less obsessed with evaluation and grading. Which probably means people have to be less obsessed with having a credentialing and gatekeeping system while calling it an "education" system. Probably an even harder sell. Although since the next step is for the AI to eliminate the need for credentialed humans, maybe we get it throught the back door.
As for a systemic solution, I imagine you could probably handle exam scheduling at the university level once enrollment is over and drop week has passed. Of course this only works if the entire university is on board. Otherwise the system breaks down at the edges super quickly.
Once enrollment is more or less fixed I imagine you could generate a fairly optimal arrangement of final exams with an SMT solver + linear programming. Give 5.5 hours per exam, 2x a day, with a 1 hour allocation for breakfast + travel and a 1 hour allocation for lunch + travel. That gives you 14 hours. Breakfast at 0700 if one is so inclined, exam 0800-1330, lunch 1330-1430, exam 1430-2000.
You could do 6 hour exams but you'd have to offer extended hours on dining halls in that case since students may not be eating until 9pm/2100 or later.
With 5 days, 2 exam slots a day, that's 10 exam slots per student. Most students are going to bunched into relatively similar courses per semester (with some degree of variation) and students essentially never take more than 8 classes in a semester (I did 7 one semester and 8 the next and they just about killed me and generally I didn't see undergrad students taking more than 5-6).
A solver should be generally able to find a solution to that optimizing for most even distribution of exams. Doubly so if the university starts finals a little early and does 6 or 7 days instead of 5 (i.e. starting on the friday or thursday before). And if a complete solution is not available, a solver could identify which particular courses are causing the optimization to fail and the admin could negotiate solutions from there.
And of course you can improve upon this if the university incentivizes/pressures X% of courses in a program to offer no-exam/project based finals instead. Personally I hated project based finals (too much to do already and you end up forced to choose where you allocate your time) but I understand they are preferable for some students and they'd reduce the load during finals week assuming they are required to be due before finals and not during.