Reduce Draw Calls for many Materials

Oh the texture limit is global and not per material? So we have a problem. We are not able to reduce our building textures globally to 128. Also I think we get a big performance problem when all textures that are in a single material are sampled in pixel shader and the shader will be very complex when connecting 128 sampler nodes. Our current texture array shader is very simple and only samples two times (diffuse and normal map).
In past projects (DX9) we generated texture atlases for the buildings but there we had problems with mipmapping artifacts. Is there any different solution than texture arrays? We consider to make tablet games in the future and there we cannot use texture arrays or shared texture samplers.