H(m) = H0( H1(m) + H2(m) + ... + Hn(m))
where + is string concatenation and H0,...,Hn are mostly good hash function.
I would expect H to be as good as the best of H0,...,Hn on almost every metric; at worst being limited by the block size of H0.
That is you would need to badly break all of them to break H.
Honestly I would also guess that even if H_i = HMAC(md5, i, m) you would get a decent H (except for the small block size.
So maybe something even more nested like
H(m) = H_00( H_01(m) + H_02(m) + ... + H_0p(m))
+ H_10( H_11(m) + H_12(m) + ... + H_1p(m))
...
+ H_q( H_q1(m) + H_q2(m) + ... + H_qp(m))
where H_ij(m) = HMAC(md5,i*(p+1)+j,m).