Customizing auth might work: http://web2py.com/book/default/chapter/08#Customizing-Auth
I'm not sure exactly what the implications might be of changing the field names. My experience is that the core code is genericised pretty well to handle name changes. The one issue I see, though, is that web2py does seem to expect table primary keys to be "id". I'm not sure what to suggest there.

