You are off by a factor of two since you are averaging amplitudes. You should average the power instead (i.e. the square of the amplitude).
Off course, this only works if the input signal is white, i.e. equal energy at all freqeuncies.
Then, using np.poly, I thought I would receive the coefficients of the resulting filter.
I'm guessing, that's your problem. With 16 poles this becomes a very high order polynomial which is numerically challenging. Try implementing the filter as cascaded second order sections instead.
If you want to eliminate steady state sine waves with constant frequency, ...