Query custom post type in the loop

You are probably getting a rewrite conflict with the has_archive argument here:

 $args = array(
    'labels'        => $labels,
    'description'   => 'Holds our services and service specific data',
    'public'        => true,
    'menu_position' => 5,
    'supports'      => array( 'title', 'editor', 'thumbnail' ),
    'has_archive'   => true,
  );

Set has_archive to false if you do not want the automatically generated archive.

I don’t really see the logic of not using the template system though.