Multiple PayPal accounts linked to ONE installation of Woocommerce

Solution:

I can see two functions to be written here.

1. To alter the order data when an order is created. This is where we save the email needed.

add_action( 'woocommerce_checkout_update_order_meta', 'woocommerce_checkout_update_order_meta' );
function woocommerce_checkout_update_order_meta( $order_id ) {
    $email = 'paypal@location1.com';
    // do something here as to use the right email.
    // you have $order_id.
    // can be used as:
    // $order = wc_get_order( $order_id );
    // $order->get_billing_address_1() to get the address to check order address.
    // or use $_POST['location'] if ever you posted some data.
    update_post_meta( $order_id, '_alternative_paypal_email', $email );
}

2. Then use woocommerce_paypal_args to alter the args that is being passed to paypal.

add_filter( 'woocommerce_paypal_args', 'woocommerce_paypal_args', 10, 2 );
function woocommerce_paypal_args( $paypal_args, $order ) {
    $email = get_post_meta( $order->get_id(), '_alternative_paypal_email', true );
    if ( !empty( $email ) ) {
        $paypal_args['business'] = $email;
    }
    return $paypal_args;
}

To summarize, this is just an example. But these two hooks is enough to get what you need.