I ran into the same issue a couple of weeks ago. What I ended up doing was creating a second app block, basically a copy of the one I use on product templates, but with an extra block setting (of type product) that lets the merchant pick a product from a dropdown. That way, the block can use block.settings.product instead.
It’s definitely a workaround, and it can be confusing for merchants to know which block to use. To make it simpler, I keep the block with the product selector hidden by default, and only enable it for merchants who want to use the app on non-product pages.