I think you can avoid all these issues by deleting and appending features instead of overwriting a whole feature class.
If you run a tool that replaces a feature class, then you're actually deleting a feature class and creating a new one. In other words, you're changing the database schema, even though the schema ends up looking just like what you started with (same feature class and fields).
An alternative is to keep the existing feature class, delete the features from it, and append new features into it. This way, you don't need a schema lock, even though the end result is the same as the other method.