wp_get_attachment_image_src on multisite

wp_get_attachment_image_src() function returns an array that’s why your code isn’t working. Try the following code.

<a href="https://wordpress.stackexchange.com/questions/295180/<?php echo esc_url( home_url("https://wordpress.stackexchange.com/" ) ); ?>" rel="home">
    <?php
    if ( get_theme_mod( 'bwpy_logo2' ) ) :
        $img_data = wp_get_attachment_image_src( absint( get_theme_mod( 'bwpy_logo2' ) ) );
        $img_url = isset( $img_data[0] ) ? $img_data[0] : '';
        // Or you can try this
        // $img_url = wp_get_attachment_image_url( absint( get_theme_mod( 'bwpy_logo2' ) ) );
        ?>
        <img src="<?php echo esc_url( $img_url ); ?>" alt="<?php echo get_bloginfo('name'); ?>" class="header-avatar">
    <?php else : ?>
        <img src="default-site-icon.png" alt="<?php echo get_bloginfo('name'); ?>" class="header-avatar">
    <?php endif; ?>
</a>