You can try this. I think it works fine.
/*PUT THIS IN YOUR THEME FUNCTIONS FILE*/
/*STEP 1 - REMOVE ADD TO CART BUTTON ON PRODUCT ARCHIVE (SHOP) */
add_action('init','remove_loop_button');
function remove_loop_button(){
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
}
/*STEP 2 -ADD NEW BUTTON THAT LINKS TO PRODUCT PAGE FOR EACH PRODUCT
*/
add_action('woocommerce_after_shop_loop_item','replace_add_to_cart');
function replace_add_to_cart() {
$link = get_permalink(get_page_by_path('contact-us')); //change 'contact-us' to your contact page slug.
echo do_shortcode('<br>[button link="' . esc_attr($link) . '"]Contact us[/button]');
}