For your issue 1 and issue 2, things is this,
For marking course completion, Moodle utilize two task, core\task\completion_daily_task and another is core\task\completion_regular_task, so rather than running whole cron job at once, you can make one script . Following is same one
require_once('config.php');
require_once($CFG->dirroot.'/lib/classes/task/completion_regular_task.php');
require_once($CFG->dirroot.'/lib/classes/task/completion_daily_task.php');
try {
increment_revision_number('course', 'cacherev', '');
$obj = new core\task\completion_daily_task();
$obj->execute();
$obj = new core\task\completion_regular_task();
for ($i = 0 ; $i < 2; $i++) {
$obj->execute();
}
} catch (Exception $e) {
$obj->execute();
}
This script can help you to do course completion stuff, put this in place where it can run frequently, If you havent run cron for long time, then for first time, it will take time as it will create entry in {course_completions} table. Try above one.
For issue 3: I dont know.... sorry but i will research it and tell you.