Try to use Application.Session.CurrentUser.AddressEntry.GetExchangeUser.PrimarySmtpAddress
(you would of course need to check for nulls).
As for the account order, you can either use Extended MAPI and IOlkAccountManager.GetOrder (you can play with that object in OutlookSpy (I am its author) if you click IOlkAccountManager button) or you can use Redemption (I am also its author) and its RDOSession.Accounts.GetOrder
method (see http://www.dimastr.com/redemption/RDOAccounts.htm). The first account in the returned collection will be the default one.