Changing country fields to picklists

Changing country fields from free text to picklists is not a trivial undertaking. There are several considerations:
1. The existing country fields cannot be changed to be a picklist
2. The country field appears in several record types (account, contact, quote, order, invoice and addresses).
3. Addresses are mapped when creating records in the context of other records.
The options appear to be:
1. Add new fields of type picklist to each of the record types. This will require careful maintenance and replication of the address mapping (e.g. when creating a contact from an account, when adding an address as a Ship To address to an order etc). A way round this may to be add a new field and use Javascript to populate the existing country field whenever the new field (of type pick list) is changed.
2. Use Javascript to make the country field behave as a picklist (even though they are not). This approach is described at http://www.stunnware.com/crm2/topic.aspx?id=JS1.
None of these options are particularly satisfactory.

CRM Topics: 
CRM Versions: