I did the test using FORALL in a PL/SQL anonymous block with a commit every 100,000 rows (so there were ten iterations with a FORALL and commit in each iteration). It took 23 minutes. A simple cursor FOR loop with commits every 100,000 rows took 25 minutes while 10 straight SQL update statements took 23 minutes. Very comparable. A bug has been filed for my SR, so maybe my next update to this thread will be news of a planned bug fix. I can dream can't I?
Thanks for the suggestion.