Prečo si myslíš, že readfile zbytočne zaťažuje server? Táto funkcia je pre posielanie obsahu súboru priamo navrhnutá a je optimalizovaná ako na rýchlosť, tak aj na použitie pamäte.
To, že download manager nevie určiť veľkosť súboru, je spôsobené tým, že ju neposielaš v hlavičke (Content-Length). Prípadne si ešte môžeš pozrieť hlavičky, ktoré štandardne posiela Apache, aby si videl, čo všetko tam je.
Alebo ak máš k dispozícii mod_headers, môžeš si upraviť hlavičky v .htaccess.