Here's something I just discovered...
There is a function in the S95 called Window_EmergencyRefreshPhysicalScreen. If I erase the screen with draw_filled_rect and then call Window_EmergencyRefreshPhysicalScreen in vid_bitmap_refresh(), all screen drawing appears to work properly. I'm not exactly sure what's going on here, but for now I'm going to declare victory on the screen drawing issue and move on.