Spectral analysis with high selectivity but low number of points
While I'd still like to know the answer to my question about how to merge multiple FFT bins into one, the real solution to increasing the selectivity was much easier to solve: I just had to use a different windowing function.
Here's the result of step 2 for 3 cases: no windowing function (blue), using the Blackmann window that I used earlier (green), and using a Kaiser window with a beta factor of 20 (orange):

In my numpy code, the change is as simple as this:
    w = np.blackman(len(y)/num_ffts); corr = len(w)/sum(w)

by this:
    w = np.kaiser(len(y)/num_ffts, 20); corr = len(w)/sum(w)