Perhaps you could work with statuses instead of moving the products to the trash? If you change the status from published to draft the product will not be visible anymore.
To automate this you can install the plugin WunderAutomation and set up a workflow that:
1. Triggers on “Post saved”
2. Have filters that require that (a) The post type is “Product” (b) Current status is “Published” and (c) Custom field _regular_price equals zero
3. When the above conditions are filled. Change the post status to “Draft”
This workflow will also prevent publishing the product again until the price is not zero.