Adding a new plant loop with a water heater and a water use connection for each apartment would be a very easy task using a measure. But you'll get dinged on simulation time if you end up with 150 plant loops. Here is some pseudo code if that's helpful: Loop on all spaces, check if the spaceType corresponds to appartment, if so create a plant loop with the necessary components (water use connection and equipment, water heater, pump, setpoint manager). You can also get the spaceType you need and call spaceType.spaces...
Note that all of that can de done using or adapting some of the work done as part of openstudio-standards. See Prototype.HVAC_Systems.add_swh_loop and Prototype.HVAC_Systems.add_swh_end_uses especially.
I guess the true question is what do you know about the efficiency of the water heaters in each space? Are they modulating? Is it a tank-style water heater that just turns on and off? If natural gas, do you have an automatic damper to close the flue when the water heater is off (are standby losses a big factor?)
Is water heating usage a big driver in your building? How well do you think you know the actual hot water draw versus various losses?
The answer to these questions will determine whether it's an appropriate assumption to model it as a single water heater or if it would be too crude of an assumption.