If a user doesn't have the admin permission for an entity type this doesn't mean you can't allow the user specific operations on specific existing entities:

    /**
     * Implements hook_ENTITY_TYPE_access() for entity type "block".
     */
    function mymodule_block_access(\Drupal\block\Entity\Block $block, $operation, \Drupal\Core\Session\AccountInterface $account) {
      if ($operation == 'update' && $block->getPluginId() == 'custom_block_plugin_id') {
        return AccessResult::allowed();
      }
      return AccessResult::neutral();
    }

You also need to alter the form not to redirect on submit to a page the user has no access.