We have found a solution that uses liquid code and custom java script to add a drop down to the standard Address1:Country/Region field -
This retrieves the country list from another dataverse table and then creates a "Select" html element which is then used to replace the original input element. Here is the script -
{% fetchxml get_countries %}
<fetch version="1.0" mapping="logical" returntotalrecordcount="true" distinct="false">
<entity name="cr9f3_countrieslist">
<attribute name="cr9f3_countryname" />
<filter type="and">
<condition attribute="statecode" operator="eq" value="0" />
</filter>
</entity>
</fetch>
{% endfetchxml %}
{% assign country_options = '<select name="ctl00$ContentContainer$WebFormControl_6ac70e3d0e0a4dcd9f4b75e894355b76$EntityFormView$address1_country" id="address1_country" class="form-control picklist " onchange="setIsDirty(this.id);"><option selected="selected" value="" label=" " aria-label="Blank"> </option>' %}
{% for res in get_countries.results.entities %}
{% assign countryname = res.cr9f3_countryname | escape %}
{% assign country_options = country_options | append: '<option value="' | append: countryname | append: '">' | append: countryname | append: '</option>' %}
{% endfor %}
{% assign country_options = country_options | append: '</select>' %}
$(document).ready(function() {
$('#address1_country').replaceWith('{{country_options}}');
});