Is there any way to archive reports in CiviCRM so they are still available but no on the long list of reports?
I am not sure if we can. One option is to disable report template but it will disable all the reports associated with the template, which i believe you don't want.
However there is column(is_active) in civicrm_report_instance to set report Active/In-active but the report list is not filtered on this field(See here). So adding a where clause
AND inst.is_active = 1 will list only active reports and then update all the report instances that you would like to archive to set is_active = 0 through api explorer (CiviCRM >> Support >> Developer >> API Explorer)
Alternate option will be to create a dummy user and assign all the report instances that you would like to archive to dummy user contact through api(so all assigned reports will be visible to dummy contact user only and then set it NULL when you want the report to be visible for all)