Solved (I think) - found a free plug-in that does all we need without wrecking anything else and without needing a degree in bad UI navigation skills.
https://wordpress.org/plugins/woocommerce-checkout-manager/
Leaving the rest for future reference.
Virtual products, no need for billing details etc, so
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
unset($fields['billing']['billing_first_name']);
unset($fields['billing']['billing_last_name']);
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);
unset($fields['billing']['billing_phone']);
unset($fields['order']['order_comments']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_last_name']);
unset($fields['billing']['billing_email']);
unset($fields['billing']['billing_city']);
return $fields;
}
To save editing functions.php or messing with child themes, using my custom functions plug-in.
BUT this doesn't work, it just disables all checkout fields, including any custom ones I added, like BTC address, and the email one, which I commented out. In fact, the first line alone totally disables all fields. Very zen...
So, maybe this would work but it's beyond me: