You should be able to create a schema of this form with a couple of caveats.
Something like this should put the FKs where you want them:
.HasMany(c => c.Contacts)
.WithRequired(c => c.Customer)
.Map(m => m.MapKey(c => c.Id, "CustomerId"));
.HasOptional(c => c.DefaultShippingContact)
The caveats are:
There is currently no way to change the name of the FK for the second relationship, so it will be called “ContactId” rather than “DefaultShippingContactId”.
We hope to rectify this for RTM.
Since you are not mapping FKs into your model you are using “independent associations”.
Independent associations make certain things like n-tier scenarios, data binding, and concurrency resolution very hard, and also have some quirky behaviors.
Usually it is better to map FKs if possible even though it detracts from the pure OO nature of your classes.