Another way to go about this is using a the normal users service and only enabling login via magic links, and only allowing Admin to enable users via the users table.
This would allow them to use a special link sent to their email which would automatically log them in.
It would not however look like exampleapp.anvil.app/SpecialNonChangingUserCode in the browser, it would just be a new link every time they logged in that went to their email. The first link could be generated to their email by you after you created the user an enabled it.
Kind of like how 2FA via email works, but at every login.
You can’t do: exampleapp.anvil.app/UserCode
But you can: exampleapp.anvil.app/#?usercode=abc&reason=def
Then you can get the query string (the part after the #) as a dictionary. See the docs here: Anvil Docs | Navigation
The routing module of Anvil Extras mentioned by @anthonys builds on that to create a nice navigation system.