I had a site with a similar situation where courses needed to be delivered either as a series of units, or accessed individually. So we had multiple courses inside a category and a special "landing" course which was placed as the first in the category. The landing course has automatic enrolment for all logged in users - so that anyone can see it. But each of the other courses had both cohort and Paypal enrolment enabled so that people who were assigned to do the whole set of units would be enrolled via the cohort, but other individuals could purchase and then access each unit separately.
We made a child theme of the site theme (it used Moove) and all it did was override the renderers we needed (core_renderer and core/course_renderer).
We then enabled 'Allow category themes' and applied the child theme on the category containing the course / units.
We overrode the navbar renderer in the child theme so that clicking on the name of the category in the breadcrumb bar, course category list and other menus would open the first course in that category - the index course.
It was a bit of work but the index course can be open to everybody without any enrolment and be designed how you like with links or videos or even activities
, and child units can have their own enrolment conditions. And people who bought one or two units who wanted to then study the whole course could get enrolled via the cohort and not have to re-complete the units they had already done.
You could (in theory) put the links to the child units on labels and then conditionally lock them using activity restrictions based on some external condition - like a lookup to an external service to see if they qualify for entry (perhaps using my xapi call
plugin which is designed exactly for this purpose).