I'm still considering it :)
I think npub makes sense in some contexts because it acts as a kind of backward-compatible gateway to the “object.” In fact, all clients can display a standard profile. But if the metadata is specifically labeled, as in my proposal, clients that support it can show an appropriate view. Querying relays is also possible and easy.
I agree that this seems suboptimal from the point of view of traditional data modeling, but it has enormous advantages if we talk about discoverability and interoperability, which are (at least the first) a fairly critical point in Nostr.
Of course, we talk about npub when you need an entity that has some sort of autonomy and is not necessarily tied to an owner.
I think you could do both, without overloading kind 0. You'd publish a product-specific metadata event, and a fallback profile that includes a link to somewhere you can view the full listing. I don't think that would mess anything up, and it would get you the fallback you're looking for.
Fallback profile, mhm, could works.
But are you still talking about a keypair for every product?
Yeah, and while for products I still don't really see a big benefit, it's a reasonable design choice.