fn next_user_id() -> Result<u64>
Returns the next available user ID, guaranteed to be monotonically increasing and never reused. Uses a persistent file to store the last allocated user ID.