Plan says it's using temp files for sorting....I would suggest you increase work_mem for this to avoid temp.fike creation...Although not the answer to all your problems, it would be a good start .
Even setting work_mem to 64MB remove all the "temp read" and showig all memory reads, but still we are seeing similar cpu spike when executing this query from multiple sessions and also the response time is staying same.