How can I stop ‘in use’ message from intermittently blocking my wp_posts table?

If repairing the table fixes it, you can schedule a repair database as often as needed, I use a plugin called WP-DBManager, after installation go to Database > DB Options and find Automatic Scheduling, you will have to work on Automatic Repairing Of DB, I think every hour is ok, not so often but often enough.