40,000 records is not a lot. Certainly no reason not to do things the WordPress way

A custom table would be even worse btw. For instance one might want to query all indieweb post types. Ideally they would all have their own custom post type and custom ui built. Using the posts table would enable them to all be queried easily, and would also enable easy filtering for from end display (and 10s of other features that come with using the standard api)

A custom table not do so much.

As I said I’m sure your solution is great for you but it seems a real pity you’ve taken an approach that means others would be silly to use it as anything other than a standalone tool.