Why can't I get maximum gain that can be achieved by LM358 op amps (gain < 3.6 !!!)?
I simulated your circuit in LTspice - setting R1 to 2.222k to produce a gain of 10x, V1 to 101mV (same as your divider powered by +5V) and V2 ramped up from there by +0.25V over a period of 1 second. 

Instead of getting the expected 2.5V out for 0.25V in I only got 0.646V. The plot below shows why.

 

At first the outputs of U1-A (blue line) and U1-B (red line) did what was expected (ramping up and down equally to produce a differential output) so the output of U2-A (green line) rose with the expected slope. However U1-B's output quickly approached Ground where it leveled off because it could not go any lower. As a result the large signal gain was reduced from 10 to 2.6.

To give U1-B some 'headroom' below Ground I applied -4V to the LM358's negative power supply input. Now the plot looks like this:-



Much better!

According to LTspice the output of U2-A 'tops out' at about +3.9V when powered by 5V. This should provide enough dynamic range for reasonably accurate A/D conversion.

The maximum negative op amp supply current was 440uA, which could easily be produced by an ICL7660 or similar negative voltage generator.