1. You could just set up an extra course field for Credit Hours. Then you should be able to use something like Configurable Reports to create a report that shows how many credit hours a student has. We do this so that we can add credit hours to a certificate.
2. The course field for credit hours probably wouldn't help with this. But if you put the students into a 200 level cohort, you can set self-enrollment to limit to that cohort.
3. There is a plugin for this. Search for enrol_coursecompleted in the plugins database.
I think you could do this in moodle if you are willing to think out of the box a little. Search the plugins database and google each thing you are trying accomplish. Also, you might be able to pay someone to write a plugin for you if you don't find one already that meets your needs.