The following solution (from T.J. Takei) assumes a downtown in the center at (0,0) where the first coordinate indicates east-west coordinate and the second indicates a north-south coordinate.

Eastbound buses (red arrows) will line up along a -1 slope (five blocks/units apart on each road). For each time t, the position of bus n will be:
    En = { b(-y + t + 5*n, y) } for each y-th East-West street
Westbound buses (blue arrows also five units apart) are lined up along the same angle and move in the opposite direction
    Wn = { b(-y - t + 5*n, y) }
Northbound buses (purple arrows, five units apart) are lined up in steeper incline (slope = 1.5 in yellow dots):
    Nn = { b(x, 1.5*x + t + 5*n) } for each x-th North-South street
Southbound buses (green arrows, five units apart):
    Sn = { b(x, 1.5*x - t + 5*n) }

When a commuter arrives, he may at first wait up to five units but then a maximum of 2.5 units for the next bus. There is room for improvement because we are not taking full advantage of the fact that to get from (x,y) to (x',y') we can either go to (x,y') first or to (x',y) first. Can you exploit this fact to do better?