On the Campaign dashboard I would like to prevent one specific type from being listed
There lots of screen that uses datatable to retrieve list of results which do not support any hooks to manipulate results or add additional clause or columns. We have altered the ajax request post/get data using jquery to send filters. In some cases it works, like in your case it may work if you want to filter it using campaign type. Here is a small snippet that i would call on the campaign dashboard page

{literal}
&lt;script type="text/javascript"&gt;
CRM.$(function($) {
  $(document).ajaxSend(function(event, jqxhr, settings) {
    let url = decodeURIComponent(settings.url);
    if (url.indexOf('datatable/called/url') != -1
      &amp;&amp; url.indexOf('[otherparameter]') != -1
    ) {
      if (!$('#campaign_type_id').val()) {
        settings.data = settings.url + '&amp;searchCriteria=campaign_type_id&amp;campaign_type_id=' + '1,2,3';
      }
    }
  });
});
&lt;/script&gt;
{/literal}


The other alternative method is support hooks like selectWhereClause or rewrite whole logic to use api so that it can altered using hook a and submitting PR.

HTH

Pradeep