Using webservice to popolute/search Address Field fields I'm busy developing a custom shipping module and want to have an auto-complete/select list of towns but the available data for the list is from a webservice (the reason for this is so that the shipping company can update their details without me having to update on my side the whole time).

How do I interact/modify/manipulate Address Field fields?  I tried to modify field.tpl.php to hide a country but it does not affect the address section in checkout, only the products section of the cart (and somehow I don't think this is the way to go anyway).  I also looked at addressfield.api.php but that looks very limited.  Should I just use normal fields one by one (street, town, zip code etc) and try and modify them. I'm not sure where to even start researching what to do to accomplish this so any pointers in some direction will be appreciated.
More than likely, the best approach you can take here would be to add the AddressField reference to wherever it needs to be, and then add in logic to poll and collect address data inside a form validation call inside a module, using a hook_form_FORM_ID_alter() 1 call, when new Entity is created or edited.

This guide provides additional information on using validation calls in Forms: https://api.drupal.org/api/examples/form_example!form_example_tutorial.inc/7