Conceptually, a good solution can be had by reversing the natural way of thinking about this problem. The question concerns finding all locations with at least 10 of each kind of establishment within a three-block distance. That makes it sound like each location has to be inspected separately, searching three blocks in all directions. Because there are infinitely many possible locations, this is usually done by adopting a raster (grid) representation using a fairly fine cell size, so that streets are rendered with reasonable precision. The work still sounds formidable: such grids often have millions to hundreds of millions of cells.
Instead, though, "spread" each establishment out onto all locations within three blocks of it. Each establishment contributes a count of one to each such nearby grid cell. Letting the counts accumulate separately at each cell produces a focal (neighborhood) sum of the establishments. Now you only need to select the points where the sum has reached (or exceeded) 10 for each of the three kinds of establishments.
The restaurant focal sum (which is a raster dataset) counts the number of restaurants (open later than 6 pm) within x distance of each point.
The retail focal sum counts the number of retail establishments (open later than 6 pm) within x distance of each point.
The store ... etc.
With these three raster datasets in hand, the query is an easy local logical combination (retain all points where each of the focal sums is 10 or greater).
The challenge lies in using the city street distance to compute focal sums. If that distance isn't critical in the application, just use a circular or a diamond-shaped neighborhood: this enables the software to exploit Fast Fourier Transform techniques, which are blazingly fast. (When most city streets are oriented up-down and left-right on the grid, a diamond-shaped neighborhood can be a pretty accurate representation of a distance-limited "circle.")
If accuracy is critical, you may need to work much harder. In the worst case of irregular streets and high accuracy needs, you would likely have to loop over each shop location and compute its contribution to the focal sum by means of a distance calculation (via CostDistance, PathDistance, or street network calculations) and separately add all these contributions. That would likely require some detailed coding.