Transactional entities?
You can wrap all the entity save calls in a further transaction with Connection::startTransaction for a given database connection. Inject the database service into the form using FormBase::create

Catch using DatabaseExceptionWrapper and rollback :-). This is similar to Drupal 7 behavior as well.

It would be best to provide a unique name for the transaction as the transaction stack is fairly basic.