The difference between map style and iterative datasets is that the former uses indices to load samples while the latter can be used for streaming data.
You could search for 3rd party Python libraries yielding a high throughput and check if you could use them. The PyTorch Dataset and DataLoader are utilities to load samples, shuffle and batch them. The data loading itself can be done by any library which would be compatible with multiprocessing.
If you think that loading multiple samples in a single __getitem__ call might be beneficial, you could check the BatchSampler, which would pass a batch of indices to this method.