Could not find prepared statement with handle -1 SQL Server Profiler
Well I figured it out.

Log4Net's AdoAdapter was keeping a prepared statement saved through the duration of its connection, and my plan cache was flushing them out sometimes.