Creating a page per bundle
Why are they all showing up on the main entity page?


This is the easy part. I had the same issue with https://www.drupal.org/node/2299755, but I was dealing with several modules that were each defining a single entity.  Your configuration is a bit more complicated.

You are seeing the UI elements for Manage Display and Manage Field at admin/structure because admin/structure/gov-data doesn't exist. admin/structure is inheriting everything you've defined after admin/structure/gov-data like admin/structure/gov-data/bill/fields and admin/structure/gov-data/bill/display,  First you need to define a menu path for admin/structure/gov-data in your module, but this will only push all of the fields and display tabs up to that level.  You'll also need to either define a redirect for each entity so admin/structure/gov-data/bill goes to admin/structure/gov-data/bill/fields or alter the admin/structure/gov-data/bill/fields and display menus so they aren't tabs.


  How do I organize this so that it looks like content types?


This is a bit more complicated.  The display of node types found at admin/structure/types doesn't just automagically appear.  It is defined in the Node moduels's menu hook http://cgit.drupalcode.org/drupal/tree/modules/node/node.module?h=7.x#n2004.  To get something that looks like the content type list, you'll need to create a customized version of the node_overview_types() function found in http://cgit.drupalcode.org/drupal/tree/modules/node/content_types.inc?h=7.x#n8

So for your configuration, alter your hook_menu to add something like...

function gov_data_menu() {
    $items = array();

    $items['admin/config/services/gov-data'] = array(
        'title' =&gt; 'Government Data settings',
        'description' =&gt; 'Configure settings for Government Data',
        'page callback' =&gt; 'drupal_get_form',
        'page arguments' =&gt; array('gov_data_admin_settings'),
        'access arguments' =&gt; array('administer site configuration'),
    );

    // returns list of entities with menus "under" gov-data.
    $items['admin/structure/gov-data'] = array(
        'title' =&gt; 'Manage Government Data Entities',
        'description' =&gt; 'Links to manage field and display of entities',
        'page callback' =&gt; 'gov_data_overview_types',
        'access arguments' =&gt; array('administer gov data'),
        'weight' =&gt; -50,
    );  

    return $items;
}
/**
 * Displays an entity type admin overview page.
 * Borrow from node/content_types.inc
 */
function gov_data_overview_types() {
  // This requires a lot more work
}


There is a lot of code you can repurpose from node_overview_types(), but that is something you can figure to meet your specific needs.  You biggest issues here are undefined menu paths being displayed at a level you didn't expect because the deeper, custom menu paths aren't defined anywhere.