Si el móvil tuviera 100 núcleos a lo mejor sí te valía la cuenta de 500/100

Pero los móviles, salvo que sea muy alta gama da gracias que tenga más de cuatro y que el sistema operativo te deje usar todos.
Mientras un núcleo está ocupado con un hilo no puede estar ejecutando otro, si tienes muchos hilos lo que consigues es que vaya más despacio porque tendrá que cambiar de contexto más veces.
Así que mejor tener menos hilos trabajadores (con un pool del número de núcleos va servido, 4, 6...), que ya se encarga el Executor de encolar las tareas y ejecutarlas cuando se vayan quedando libres. Entiendo que si cada tarea tarda 2 segundos es que está calculando cosas todo el rato y no hay esperas (que entonces sí tendría sentido que el pool fuera más grande)
Por cierto que si ya usas un executor te sobra el AsyncTask, el AsyncTask es para tareas cortas y ya se encargan ellas de elegir el hilo de ejecución, pero bueno, es lo de menos en este caso.
P.D: Sobre que te bloquee la UI, también es normal, si tiene 100 hilos más el hilo principal son 101, el tiempo que va a poder dedicar a cada hilo el sistema operativo va a ser ínfimo. Si no quieres que afecte a la UI hay que bajar el número de hilos, así el reparto de tiempo entre el hilo principal y el conjunto de todos los demás hilos es algo más equitativo.