Using an address field widget on a custom form and storing data
You can limit the $form array's elements by setting their #access property to FALSE.

The validation and storing should be handled by the form for the corresponding entity by itself.