Thank you for sharing these details.
Based on what you've shared, you'll need 3 custom post types and not 2:
1. Custom post types:
a). Camps
b). Venues
c). Camping Events
As the name indicates, for each individual camp that is taking place at a certain time at a certain venue, you'll add a new post/record in this new post type 'Camping Events'.
The number of required post relationships will also increase:
2. Post relationships:
a). Camps -> Camping Events:
One to many, so that one 'camp' can have many 'camping events', but one 'camping event' can link to only one 'camp'.
b). Venues -> Camping Events
One to many, so that one 'venue' can have many 'camping events', but one 'camping event' can link to only one 'venue'.
After that, any general information that is about a particular 'camp', you can store it with its 'camp' post, in form of custom fields or custom taxonomies.
And any general information that is about a particular 'venue', you can store it with its 'venue' post, in form of custom fields or custom taxonomies.
Lastly, any specific information that will change with respect to each instance of a camp (for example date and time), will be saved with its 'camping event' post, in form of custom fields or custom taxonomies.
You'll also have to make sure that to be able to search these 'camping events' by certain custom fields or custom taxonomies, it is attached directly to this 'camping events' post type. You won't be able to search the 'camping events' posts, by the custom fields or custom taxonomies that are attached to 'camps' or 'venues' post types.