How to use DefaultSelection::getReferenceableEntities in custom controller?
Okay, it took me over 2 weeks to get to the bottom of this, but turns out, that DefaultSelection::getReferenceableEntities is just a wrapper for Drupal::entityQuery. This becomes especially clear when realizing that DefaultSelection::getReferenceableEntities makes a call to DefaultSelection::buildEntityQuery. And this method is only a complicated way to make a customized query.
So for my purposes, all I had to do was learn about entity queries. Here's how I ended up performing a search:
For taxonomy terms
            $query = \Drupal::entityQuery('taxonomy_term'); 
            $query-&gt;condition('vid', 'my_taxonomy_terms'); //select the collection
            $query-&gt;condition('name', $search_term, 'CONTAINS'); //searching the title for a search term
            $term_ids= $query-&gt;execute();
            $terms = \Drupal\taxonomy\Entity\Term::loadMultiple($term_ids);  //process the nodes however is desired

            $result = [];

            foreach($terms as $term){
              $result[$term-&gt;id()] = $term-&gt;getName();
            }

            return $result;

For other entities and nodes
            $query = \Drupal::entityQuery('node'); 
            $query-&gt;condition('field_somefield', 'somevalue'); //optional condition to filter results by
            $query-&gt;condition('title', $search_term, 'CONTAINS'); //searching the title for a search term
            $node_ids = $query-&gt;execute();
            $nodes = \Drupal::entityTypeManager()-&gt;getStorage('node')-&gt;loadMultiple($node_ids); //process the nodes however is desired

            $result = [];

            foreach($nodes as $node){
              $result[$node-&gt;id()] = $node-&gt;getTitle();
            }

            return $result; 

Reference: https://api.drupal.org/api/drupal/core!lib!Drupal.php/function/Drupal%3A%3AentityQuery/8.2.x