No, it is not possible to do without changing builder. The fn new(&u32) method is specified as having an interface that only lends the argument (reference to u32) for the duration of the function call, with no allowance for the returned T to borrow the input argument (which is what your impl for B needs to do).
The signature that you need is fn new(x: &'a u32) -> A<'a> which makes sense right -- a &'foo u32 produces an A<'foo>.