Display custom post type archive on page.php template

If you don’t want to supply your own page templates and using your current code is not a possibility (because of how the loop loops through all the posts) I would recommend prompting the plugin users to select a page on which they want your plugin’s content displayed (as an option on your plugin’s setting page).

Once you have the ID of the page selected by the user, you would use the_content filter and modify the page’s content, like this:

add_filter( 'the_content', 'wpse210003_render_archive' );
function wpse210003_render_archive( $content ) {
    // $selected_page_id is the page ID that the user has selected for displaying your plugin's content
    if ( is_page( $selected_page_id ) ) {
        // Get your post loop here and either add it to the existing page's content or throw away the content and just render your loop
        $content="My custom loop goes here";

        // Return your custom content here
        return $content;
    }
}

You will also be able to modify the title via the_title filter if you want to.

This way you can make sure that the layout of the page selected by user will always be correct and you will keep all the theme features associated with creating pages (sidebars, ad spaces etc.).