First you need to profile your operations to see where your time is going. Is it
Contention on shared resources such as indexes
Your options really depend on where your resources are going. Perhaps you really do need to throw hardware at it. Profiling will give you your directions.
Understanding this will open different optimisation ...
one database instance and then copy-paste it in a different database instance that is only for the FE to read from.
This is the correct solution, except you shouldn't be reinventing the wheel. Postgres has a whole solution ready made for you (you should probably read at least the introduction to Section 27 in the Postgres manual while you're there to ...