You can force single queries to 404 like they don’t exist.
function wpse67329_force_mycpt_single_404() {
if ( is_single() && get_post_type() == 'mycpt' ) {
global $wp_query;
$wp_query->set_404();
status_header('404');
}
}
add_action( 'template_redirect', 'wpse67329_force_mycpt_single_404' );