SERVER-49931 added a change to drop a role inside of a transaction. We should consider retrying the transaction if it fails due to a transient reason like SnapshotUnavailable or a LockTimeout.
These errors are pretty likely to occur as other operations in the system are running. For example, an index build on the admin.system.users collection right after the read timestamp for the transaction was established could cause the snapshot to become unavailable.