@jcsb1994 I don't know if you are still working on this but I think I was having the same issues. I never actually timed the moves on the 2.x firmware but it seemed like the moves completed in the correct amount of time. When I updated to the 3.1.1 firmware my motors went way faster than they were supposed to. So I think they changed how the feedrates are calculated.
Now I think that the feedrate is only calculated using the X, Y, and Z values. Meaning that with your initial example of G1 X-25 Y-25 Z-25 U-25 F1500 to find out how long the move is going to take you first need to find how long the diagonal move will be.
This will be 25^2 + 25^2 + 25^2 = c^2, c will equal 43.3. Then you divide by the feedrate and multiply by 60 to get the length of time the move will take in seconds. Meaning that the time for this move should be 1.73 s. I did the math for the feedrate of 300 as well and I got that the move should take 8.66 s.
The math seems to match what you are getting but it would be nice to confirm that this is actually what is going on and see if these changes were implemented when updating to firmware 3.x.