Best way to define non-purchasable products?
We use either booleans (i.e. switches) or dropdowns for this.

So we have, e.g. an availableForSale boolean we check in our template logic.  We have a sort of 'main' tab for these critical product fields (and note you can also add such a field to your variants so that for variant products you can selectively enable/disable on a per variant basis).  In your case you might choose to have 3 options - Available For Sale, Enquiries Only, Not available.  Booleans make for nice simple looking template logic, but probably use values is a better way to go if you anticipate anything beyond basic available/not available complexity.

(We use a similar but more complex field for shipping, which can be set to: Free Shipping, Can't Be Shipped, Post Shipping, Courier Only Shipping etc.  Although Commerce's now has it's own shipping category system you can and probably should use for that too, depending on how you implement your shipping).