I've always thought that there should be an option to allow the optimiser to try out different alternative plans during slack periods, in the background.
It should then compare the performance of these alternatives to the original, then "change it's mind", if it finds a faster plan.
It should use statistics to choose which plans to test, i.e. prioritise queries which are often called and which are slow.