Hi Caleb,
As you've found, roles cannot be used to restrict course access (apart from allowing particular users to view hidden courses). However, course access may be controlled through an enrolment plugin. Please see the Enrolment plugins documentation for more information.
Regarding the use of an enrolment key together with an enrolment plugin which manages course cost, please check the Enrolment plugins forum.