Although Blender does have “true motion-blur,” it is computationally expensive because it involves rendering frames more than one time.
A common strategy that is used for (especially, 2D-like) shots like this one is vector blur, which can actually be done in the compositor.
While rendering (to a “MultiLayer OpenEXR” file-set), you tell Blender to capture a “vector layer,” which expresses how the objects are moving: how fast, and in what direction (“along what vector”). The MultiLayer file will capture this layer along with all the rest. Now, you use this vector information as an input to a Vector Blur. Working frame-by-frame, the frames are effectively “softened,” but softened “in a particular direction (vector),” so that they’ll look better as they’re “moving.” In a lot of situations, this “poor man’s motion-blur” is just as good as the real thing.
You can also do more-exotic things, like overlapping layers with copies of themselves that are offset plus-or-minus a few frames in the timeline, also vector-blurring each one. If you deliberately play with the color-cast and the alpha (transparency) of these layers, the resulting effect can be quite exotic and artistic, although it remains computationally cheap since you’re doing it in the compositor and not in the render.
(As an aside: “OpenGL” renders are normally more-than sufficient for (most of) this kind of show. Conventional (expensive …) renders are needed only for “sweetener” layers, not the whole thing. Therefore, overall render-times are relatively low in any case.)