Without any disrespect, whats the fuzz? The OP's replacements does seem to work (provided there is a space left between I and the variable symbol):
In[1]:= test = {{a + I b, b + I c}, {d + I e, e + I f}}
Out[1]= {{a + I b, b + I c}, {d + I e, e + I f}}
In[2]:= test /. {e -> 1, f -> 2}
Out[2]= {{a + I b, b + I c}, {I + d, 1 + 2 I}}