Extra p tags in profile form inserted via WP shortcode
Ok, I figured it out. Here's the auto-relevant bits from functions.php:

function better_wpautop($pee){
    return wpautop( $pee, $br=0 );
}

/* This is a hack to make sure that wordpress's autop filter doesn't apply to shortcodes */
remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'better_wpautop', 11 );
add_filter( 'the_content', 'shortcode_unautop', 12 );


I thought shortcode_unautop was supposed to fix this, but I took a look at it and it's a huge hack that tries to strip p tags back out of shortcode content in a truly terrifying way with a regex (ob Zalgo reference). So I made a copy of my standard page template and added the following to the top:

remove_filter( 'the_content', 'better_wpautop', 11 );
remove_filter( 'the_content', 'shortcode_unautop', 12 );


Now there is nothing autop related happening, which is fine, since the entire content of the page comes from the CiviCRM profile.