One of the problems is that x{1,3} automatically gets expanded back into {x,3x}. You can of course 'freeze' this behavior using Hold, or other means:
Something like this could work (no guarantees):
expr = {a x + b x^2, c x + d x + 3 x^2};
expr = Factor /@ expr;
divisors =
If[MatchQ[#, Times[___]], Cases[#, Times[x__] :> x], {1}] & /@
expr;
common = Times @@ Intersection @@ divisors;
expr /= common;
expr = Inactivate[common expr]
expr // Activate
giving:
x * {a + b x, c + d + 3 x}
{x (a + b x), x (c + d + 3 x)}