Dose this mean with the displayed 21 FPS, roughly 21 hours passed in one second? Would be interesting to test with different speed 5 FPS numbers and how many hours progressed in like 100 s.
In principle yes, if you disable frame smoothing (see below). My main point was that the game does not aim to reach the target FPS when it is busy (whether because of speed 5 or because late game lag does not allow reaching the intended speed). This is a tradeoff between having more FPS or the game advancing more quickly and the developers apparently opt for the latter. So with OP's high end rig the solution in 1940 to get better FPS is to just not run speed 5.
Actual late game lag where even lower speeds don't run smoothly anymore is a different story of course.
By default the game uses frame smoothing. So when simulating a game hour does take longer than the targeted interval between two frames, there are a bunch of opportunities throughout the simulation to render additional frames. Think like an old-school progress bar which updates when certain intermediate steps are finished. Only when even the slices of the simulation between two such checkpoints becomes too slow would the frame rate drop when smoothing is on.
Frame smoothing can be disabled with launch options
-handsoff (which runs an automated AI game) or
-debug_smooth=no (or console command
debug_smooth). With smoothing disabled, you should consistently see the relation between fps and game hours while on speed 5.