The solution should be as simple as adding a catch to NonBatchingBatch#addToBatch for StaleStateException. ATM it only deals with SQLException and our JDBCException. StaleStateException is not a JDBCException. E.g.:
catch (JDBCException e) { abortBatch(); throw e; }
to
catch (JDBCException | StaleStateException e) { abortBatch(); throw e; }