Have you tried using conditional fields?
- Places > Settings > Custom Fields
- Click on your "Price" custom field.
- Click on "+ Conditional Fields" to add conditions.
- Set the conditions to "Hide" IF "FIELD" contains "free".
(Replace "FIELD" with the name of your dropdown field.)
When a required field is hidden, it does not need to be filled out.
More details here:
https://wpgeodirectory.com/conditional-fields/