I tested petr's patch, which is a nice improvement, and:
1. The 'lastcron' feature did not work because it never found version.php because it was looking under frankenstyle name and one of the arrays uses only the plugin name without the prefix; fixed
2. I added a whole bunch of comments/documentation where I didn't understand something initially (or for just missing phpdoc on the functions).
3. I removed 'BC' support for coursereport_ because that was not implemented before so it does not need BC (left it in for report_)
As you can see from the previous patch, I tested this with 5 different cron methods, this includes both types of BC (report_ and gradesomething_), new API methods in both areas which also support BC, and one example of using the ->cron frequency setting. It seems to work correctly! Filed new PULL-37 request for next week or whenever (no rush).