Circular dependency on base fields' module
Since the dependency is purely on the reference field, we could add the target_type later. For example, setting the target_type at the bundleFieldDefinition wouldn't throw the install's error and set the right target_type.
So the baseFieldDefinitions would be
public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
  ...
  $fields['store'] = BaseFieldDefinition::create('entity_reference')
    -&gt;setLabel(t('Store'))
    -&gt;setDescription(t('Select the store the contact is part of.'))
    ...
}

And the bundleFieldDefinitions would be
public static function bundleFieldDefinitions(EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
  $fields = parent::bundleFieldDefinitions($entity_type, $bundle, $base_field_definitions);
  $fields['store'] = clone $base_field_definitions['store'];
  $fields['store']-&gt;setSetting('target_type', 'custom_store')
  ...
  return $fields;
}