If you use the extension "AdBlock Plus", try to switch to "uBlock Origin" instead. The last time I looked, this uBlock Origin thingy was a lot more efficient.
Uninstall Flash. Most websites are fine today without Flash, and you could use Chrome when you run into one that really needs Flash (Chrome ships with its own Flash).
Newer Firefox versions can use multiple threads instead of just a single one like in the past. You can check if it's enabled for you by going to the URL "about:support" and looking for the entry "multiprocess windows" in the first table there. It should show "1/1" if it's running and you have one window open. I don't know if it's normally enabled or not, but there should be a way to force it enabled (which I forgot). You should find something about the topic by searching for "e10s" (that's the code-name for that multi-process project). I can tell you that in the "Firefox Developer Edition" version of Firefox, there's a check-box for this in the preferences.
This multi-process thingy by default uses just one single thread for the web content in all tabs. You can make it so each tab gets its own thread. This is the setting named "dom.ipc.processCount" in the "about:config" page. I've set it to "48". This makes it so up to 48 tabs won't have to share a thread. It will use a lot of RAM if you have dozens of tabs open, but you should be fine with your 20GB.
There is an interesting setting in "about:config" named "nglayout.initialpaint.delay" that is changing how early Firefox starts painting a new URL you visit. It by default waits for quite a bit so that it won't have to redraw a half-loaded page as much. If you reduce that number a lot, Firefox will feel better as it will appear as if it reacts faster when you click on a link. This problem was fixed recently in the nightly version of Firefox and set to 5 ms over there, but I don't know if this is already in the released version. I've set "nglayout.initialpaint.delay" = 5 manually here for me.