Could anyone have a guess why setting 600 as the baud rate simply does not work regardless of the clock setting?
1200 works (with a 42MHz pclk) so going down another 4x should produce 300 baud

But instead at 600 baud one gets ~9400 baud so clearly something is broken.
Yes indeed I may dump that ST code and just create a table of values to load in there.
UPDATE:
There is no mystery anymore really... The ST code generates a function SetSysClock for setting up the clocks but it doesn't call it. Another one is also created and that one is getting called: SystemClock_Config. Now I am using these settings

and I get a minimum baud rate of
161 baud on uarts 2,3 which run off APB1 which with DIV16 is 10.5MHz. The minimum baud rate on uarts 1,6 which run off APB2 which with DIV2 is 84MHz, is about
1285 baud.
So basically the lowest baud rate
achievable using any UART on the 32F417 at 168MHz is
161 baud. 150 baud could be achieved with a 150MHz core clock. This involves setting the slowest possible APB1 (or APB2 depending on which UART / SPI / timers you don't want to screw up) clock speed.
No real issue with the top end, with 460800 fine on uart 2,3 (won't go higher) and 921600 fine on uart 1,6 (will go higher but limited by drivers in this case).
The low baud rates are generated with great accuracy, as you might expect. The top ones achievable are generally no worse than 1% off, which is OK (10% out over 10 bits is still ok, unless the far end is doing auto baud, but few will be doing that at >> 115k).