I can see your problem it would be a task and a half to admin manually. I still think cohorts are going to be the basis of the solution though, however you actually implement it.
As to the tracking issue Moodle has some participation reports, either in built or plugin, that will show how any course is being attended wouldn't that serve for your popularity/usage stats? A couple of the reports I've seen can literally track whether the student is active in the course, second by second; you can see if they're involved or just logged in and sitting on the course page. You can see what part they've taken in forums and chat sessions etc. I don't know if these would be of any use to you? I use a daily report myself to track user activity [logins, quiz participation, course activity etc.] it's non course specific but I can see for example that this Monday had X distinct user logins while last Monday had Y and then look at the reasons for the difference e.g. school holiday.
If that autoenrol cohort works on ldap/manual authentication as it's trigger that should solve your problem but from my brief reading of it, it seems to prefer profile fields that your users would then need to fill out.
As for the cron job do you know what sort of load it would put on your server if you ran it every 60 seconds or every 30 seconds? because then your users could be presented with a usage policy document after they login to their account the first time that takes say 30 seconds to read through...In that time the cron job runs and they get allocated to the correct cohort and will be unaware anything has happened. I've had staff members login to a course as a student, I've changed them to teacher status and they refresh the page (of course I have to know they've logged in as a student first). The job though depends on CPU load after all a job that's going to bring your Moodle to it's knees every time it runs is not practical is it? But I'd say unless you have huge numbers of simultaneous logins the cron job shouldn't be overpowering it will only be dealing with a small number of users at any one time, you run the initial job overnight so the users are all in their cohorts and then run the cron job for a week to determine average load then you start phasing out the self-enrolment.
If worst comes to worst I'm being made redundant at the end of August so got a job?
John Gifford