Well for one you vastly overrepresented the geometry of simple objects. See for example your arm chair:

There is no need to have this many polygons. I don't even think you are using smooth shading and it looks smooth just because there are so many polygons. It looks like this with solid shading:

But guess what happens when I add a decimate modifier and set the reduction factor to 30%? It looks the same but has way less polygons. With the kind of displacement you're doing, you should really be using microdisplacements with texture maps, and normal mapping instead of insane polygon counts. For the chair you could get by with just normal mapping which is computationally way cheaper than displacement mapping but gives similar results when the geometry is not dramatic or on the silhouette as seen from the camera.
Regarding render times, there are lots of optimizations you can do but unless you reduce the polygons the BVH tree will be huge which will make everything else slower. You probably don't need 2500 samples on an animation. If you are playing back at 30 frames/second you can accept a tiny bit more noise and you won't notice much because it only lasts for 1/30 a second and the noise on each frame is unique. First reduce the polycounts though, then worry about render optimizations. A relatively unoptimized scene of that complexity should take about 3-10 minutes to render on a GTX 10XX card with those noise levels you have now.