What you are describing is not a Custom Post Type and what you want (or think you want) is not a custom post type. To push a CPT to its own separate table you’d have to interrupt core processes in a hundred places, and I am not even sure there are hooks enough to do that.
What you describing is a rebuild of the Custom Post Type system– a duplication of functionality, a second post system in parallel. That is a lot of work.
If you must have your pseudo-CPT in another table, ditch the Core system entirely and start from nothing. It will be less painful.
You’ve solved issue #1. If you are willing to forgo issue #2, issue #3 is also fairly easily solved in a couple of ways.
- Most of the meta boxes on a CPT edit page are replaceable, and
certain elements can be removed when the CPT is registered, or
removed latter withremove_post_type_support
. You can keep
the GUI but modify it to match your requirements. - You can
register_post_type
with'show_in_menu' => false
and
build a form from scratch elsewhere on the back-end.