Somehow, I would have expected more specialized functions such as ListConvolve or MovingAverage to perform better than qU Most[#] + qD Rest[#] &, but it is not true:
Do[Nest[qU Most[#] + qD Rest[#] &, call, n], {1000}] // Timing
Do[Nest[ListConvolve[{qD, qU}, #] &, call, n], {1000}] // Timing
Do[Nest[MovingAverage[#, {qU, qD}] &, call, n], {1000}] // Timing