Sounds like the proverbial gapless sequences... The only way to get those in a multiuser database is to serialize on ID creation. The issue you have is that your new node with your next ID is not yet committed, and another concurrent user can generate the same ID.
Note: This isn't unique to Neo4j - you can visit AskTom to see people talking about this in Oracle 20 years ago.
Bottom line - if those 3 things are actual hard requirements, then you are destined to have a single-threaded path for your code.