> I think the effective profile also has to include the SEDs of all the separable profiles too, right? (the h1 in "... int(h1 f3) ..." in the comments above).

You're right.  I think multiplying it into the Bandpass makes sense.  Why does this feel inelegant to you?  If the Bandpass is just a function, then the effective bandpass here will just become a product of the two functions.