UPDATE
After searching for literally about 18 hours I finally found a better solution. WordPress allows you to add filters on to the wp_authentication function. You can test for errors there and redirect if necessary.
add_filter('authenticate', 'check_login', 40, 1);
function check_login($user) {
if(is_wp_error($user)){
wp_redirect(site_url().'?login=failed');
exit();
}else{
return $user;
}
}