The second parameter on get_the_post_thumbnail takes the size of the image you want. You’re currently passing in:
apply_filters( 'single_product_large_thumbnail_size', 'shop_single' )
but change that to
apply_filters( 'single_product_small_thumbnail_size', 'shop_thumbnail' )
And you’ll have the smaller image size. You can also pass in “thumbnail” or any of the custom sizes you have in that spot without the apply_filter function.