It seems as if the DbContext in the EntityFramework keeps getting
slower the more operations (add, delete, modify, querying) you execute
on it.
It absolutely does - Your DbContext (and the ObjectContext it's based on) saved every entity that it ever touches, loads, updates, saves.
Quick Excerpt from an MSDN blog post:
The more you use an ObjectContext, generally the bigger it gets. This
is because it holds a reference to all the Entities it has ever known
about, essentially whatever you have queried, added or attached. So
you should reconsider sharing the same ObjectContext indefinitely.
Since you said the process takes about 4 hours, I assume you have thousands of entities that are being modified. Save Changes doesn't dump the object graph, you're just creating more and more for it to track. Everytime you make a change, it's having to traverse the graph so the bigger the graph, the longer it takes.
Is your work-around really bad code? Could there be a way to split your process so that each section creates, and disposes of it's own DbContext rather than sharing one?