I thought this was a transaction problem but it did turn out to be due to locking methods. So, the test can be enabled, but it does require changes in several places to do it: 
1) Several Locking methods need to to be added to Teradata Dialect
2) A new method needs to be added to Dialect as your Hibernate code assumes that all locking information is appended to SQL. For Teradata, the locking information needs to be prepended to the SQL. 
3) The places where the locking information is currently appended needs to be changed to 
prepend it when using Teradata. 

Here's what the changes look like:

hibernate-core\src\main\java\org\hibernate\dialect\Dialect.java
```
/**
	 * Does locking information get appended to SQL ?
	 * 
	 * @return  boolean
	 */
	public boolean isLockAppended() {
		return true;
	}
```


hibernate-core\src\main\java\org\hibernate\dialect\TeradataDialect.java
```
@Override
	public String getWriteLockString(int timeout) {
		String sMsg = " Locking row for write ";
		if ( timeout == LockOptions.NO_WAIT ) {
			return sMsg + " nowait ";
		}
		return sMsg;
	}

	@Override
	public String getReadLockString(int timeout) {
		String sMsg = " Locking row for read  ";
		if ( timeout == LockOptions.NO_WAIT ) {
			return sMsg + " nowait ";
		}
		return sMsg;
	}

	@Override
	public String applyLocksToSql(String sql, LockOptions aliasedLockOptions, Map keyColumnNames) {
		return new ForUpdateFragment( this, aliasedLockOptions, keyColumnNames ).toFragmentString() + " " + sql;
	}

	@Override
	public boolean useFollowOnLocking() {
		return true;
	}

	@Override
	public boolean isLockAppended() {
		return false;
	}
	
	@Override
	public boolean supportsLockTimeouts() {
		return false;
	}
```


hibernate-core\src\main\java\org\hibernate\sql\Select.java
in toStatementString()

```
	if (lockOptions.getLockMode()!=LockMode.NONE) {
		if (dialect.isLockAppended())
			buf.append( dialect.getForUpdateString(lockOptions) );
		else
			buf.insert(0,dialect.getForUpdateString(lockOptions));
		}
```


hibernate-orm\hibernate-core\src\main\java\org\hibernate\sql\SimpleSelect.java
in toStatementString()

```
	if (lockOptions!=null) {
		if (dialect.isLockAppended())
			buf.append( dialect.getForUpdateString(lockOptions) );
		else
			buf.insert(0,dialect.getForUpdateString(lockOptions));
		}
```

hibernate-core\src\test\java\org\hibernate\test\locking\LockModeTest.java
Remove Teradata @skipForDialect from LockModeTest