1. A method for data storage, comprising: receiving data items associated with respective logical addresses for storage in a memory that includes multiple memory units; obtaining respective estimates of performance characteristics for the multiple memory units, wherein the performance characteristics for each memory unit include an indication of a respective count of memory blocks in the memory unit that are available for programming and further include a respective time duration of a memory access command applied to each memory unit; based on the estimates, adapting, by a processor, a mapping that maps the logical addresses to respective physical storage locations in the multiple memory units, thereby balancing the performance characteristics across the memory units, wherein balancing the performance characteristics includes writing frequently accessed data to faster memory units and rarely accessed data to slower memory units as determined by the respective time duration of memory access commands applied to each memory unit; and storing the data items in the physical storage locations in accordance with the adapted mapping, wherein storing the data items comprises distributing the data items among the memory units in accordance with a weighted Round-Robin scheduling scheme that assigns respective weights to the memory units, and wherein adapting the mapping comprises modifying one or more of the weights, wherein modifying the weights comprises assigning, to a given memory unit, different first and second weights for respective different first and second types of memory access commands, the types of memory access commands including read, write, and erase commands.