The templates in your plugin don’t show up in your CPT because the templates are loaded from your theme (or child theme).
You’ll need to either
- Place the template in the root theme / child theme folder or
- Create a placeholder template file that “calls” the original
In the second case (which I’ve had to do a few times), I use something like this for the template in the theme / child theme:
<?php
/**
Template Name: My Custom Template
*/
include WP_PLUGIN_DIR.'/my-plugin/templates/my-template.php';
…while I’m sure there’s a better way at it; this works quite well. If you want to get really fancy, you could also add something to the plugin’s activation hook that copies this into the current theme.