Index tuning question
Answer to question 1:

From what you posted you can drop the first two indexes as the third will cover all of the queries you mention and the query optimizer see that as well when it builds the query plan (based on the plan you posted.)

Answer to question 2:

It's always using the third index because it has more data already in the index with the two additional index keys (InstanceId and AddressType). This keeps SQL from needing to pull InstanceId and AddressType from the primary key (the key lookup part of the execution plan) to satisfy the query. 

What I would suggest is drop the first two indexes and rebuild the third with include columns to cover the other columns being requested in the query

Create index IX_Address_profile_instance_addresstype 
on dbo.address  (ProfileId, InstanceId, AddressType) 
include(&lt;put in the remaining columns comma delimited&gt;) 
with (drop_existing=on,sort_in_tempdb=on)


This should help with the queries and should remove the key lookup from the query plan. 

See if the locks drop off after these changes and if they don't we can dig in a bit deeper.