Given that you want to be able to hide courses from instructors and students I would move the courses in question to a different account which non account Admins don't have access to. For instance at my school all our recent courses are in an account called Academics. I can move courses to a special Archive account (with subaccounts for departments corresponding to the subaccounts for the active and recent courses (say 'English' in the Academics account and english Archive in the Archive account). Teachers have no access to the archive account, but I let them know before archiving so a course can remain in the Academics account if needed; courses are also easy to move back to Academics if needed by changing the account from in the course settings.
One issue is that the terms still appear in the courses menu (but courses won't be visible to teachers), otherwise this works well. I use the API to bulk move courses between accounts