I think I have found the solution to all of my problems. And for everyone else, this will probably be pretty good to know... (FYI - this testing was done on DNN v4.05.03.)
In a test environment, I created users and then changed the User Settings to use "[USERNAME]" as a token to replace the "Display Name", inheritly hiding the "Display Name" fields. Then, I ran the source through debug and noticed that the DisplayName property was indeed returning this value directly from the UserInfo object. So, that led me to look more closely at the UserInfo class. When I removed the token from User Settings, the "Display Name" fields were all returned to normal, but they still had the tokenize values. This led me to initially believe that the database was updated to reflect the token change (but I later found that this is a cache issue).
When I checked out the actual DisplayName property in the source, there was nothing out of the ordinary. The property was simply returning a private object value. The constructor had nothing out of the ordinary going on either. However, there was another method in the class that caught my attention:
Public Sub UpdateDisplayName(ByVal format As String)
'Replace TOKENS
format = format.Replace("[USERID]", Me.UserID.ToString())
format = format.Replace("[FIRSTNAME]", Me.FirstName)
format = format.Replace("[LASTNAME]", Me.LastName)
format = format.Replace("[USERNAME]", Me.Username)
DisplayName = format
End Sub
As you can see, there is a method that is not changing the value in the database, but just replacing the value using one of the other properties. When I removed the User Setting token, the UserInfo object was still in cache. In order to fully restore this, you would need to perform an action that releases the cached objects (IIS restart, web.config change, restart application, recycle app pool, etc.).
Also, be sure to note that although this is not widely documented, you are limited to the four tokens you see in the method above.
In order to solve my specific issue and to meet my project requirements, I am going to go into my custom membership provider and put the DisplayName property back the way I want it, while still allowing the DNN Core to remove the "Display Name" fields using the token in "User Settings". Although I have not implementing this yet, I am sure that this will work! :)
Happy DNNing!