Update -- I think we may have solved the problem by reducing the pooled connection to 1 instance. Since making this change we haven't run into the duplicate key problem.
Update Again ---
This did NOT solve the problem. Does anyone have any idea what I might be doing wrong? I'm using the default SequenceBlockIdGenerator but somehow it gets confused and tries to reissue a used primary key id.