You could set up Profiles in Interaction Attendant which match on the DNIS of each DID. One profile per DID since you want to be able to roll to the Agent's voicemail.
Use Direct to Queue processing for the profile's Call Processing Style, and choose the Agent in the User Queue field. Set the "Seconds to wait..." field to 15 seconds or whatever you think reasonable to give the agent time to answer. Check the box for "Only perform 'direct to queue'...once per call".
In the profile set up the options you want - 0 for Operator, 1 would be a Voicemail Transfer to that agent's voicemail, 2 would be a Group Transfer to the Agent's workgroup, etc.
In my testing, when the agent is in a DND status, the call rolls straight to the profile menu, no ringing, and the caller can choose from the options. If the agent is available, it rings the agent's phone for the designated number of seconds, then rolls to the Attendant profile processing if the agent doesn't answer before the profile timeout.
Make sure to set the profile timeout to be shorter than the agent's incoming call timeout in his client.
That's the best i can come up with.