Custom get_the_password_form

If you look at the source code of the get_the_content() function which retrieves the post content, you’d see the following conditional:

if ( post_password_required( $post ) )
    return get_the_password_form( $post );

And in the get_the_password_form() function, there’s a filter you can use to customize the HTML of the default password form:

return apply_filters( 'the_password_form', $output );

So based on your code, this is how it should be, and be placed in the theme’s functions.php file:

function get_the_v1i1_password_form( $output ) {
    // If not in the v1-i1 category, return the $output as-is.
    if ( ! in_category( 'v1-i1' ) ) {
        return $output;
    }

    // Here you can customize the form HTML.
    $post = get_post();
    $label="pwbox-" . ( empty($post->ID) ? rand() : $post->ID );
    $output="<form action="" . esc_url( site_url( 'wp-login.php?action=postpass', 'login_post' ) ) . '" class="post-password-form" method="post">
    <p>' . __( 'This is exclusive content from v1:i1. Please enter password below:' ) . '</p>
    <p><label for="' . $label . '">' . __( 'Password:' ) . ' <input name="post_password" id="' . $label . '" type="password" size="20" /></label> <input type="submit" name="Submit" value="' . esc_attr_x( 'Enter', 'post password form' ) . '" /></p></form>
    ';

    return $output;
}
add_filter( 'the_password_form', 'get_the_v1i1_password_form' );

Note: The get_the_v1i1_password_form() is now a filter callback, so you shouldn’t use the return apply_filters( 'the_password_form', $output ); which would cause the page to stop working.

And you also don’t need this:

if (post_password_required( $post ) && in_category( 'v1-i1' )) {
    return get_the_v1i1_password_form( $post );
} else {
    return get_the_password_form( $post );
}

Additional Note

The above code gives you full control over the form HTML, but if all you want to do is replace the text “This content is password protected. To view it please enter your password below:“, then you can simply use str_replace() like so:

function get_the_v1i1_password_form( $output ) {
    // If is in the v1-i1 category, replace the text.
    if ( in_category( 'v1-i1' ) ) {
        return str_replace(
            'This content is password protected. To view it please enter your password below:',
            'This is exclusive content from v1:i1. Please enter password below:',
            $output
        );
    }

    return $output;
}
add_filter( 'the_password_form', 'get_the_v1i1_password_form' );

But of course, that would only work with the default output of the get_the_password_form() function.