This is kind of the only "right" answer when dealing with raster basemaps. It's either pixellated or going to be rendered "too small" for the zoom level.
Vector basemaps don't have this problem, and QGIS supports them, so that's the way to go if you can get data. QGIS can then render at the required DPI in full clarity but with elements scaled/positioned appropriately.