Mike,
If I understand everything correctly, you are just wanting to symbolize a service differently based on different queries, am I correct?
If so, you could approach this by creating the interface where users define what attribute they want to symbolize on. Say a drop down menu with your examples, population, income, etc.
Once the selection is made, this would fire a query task which obtains the feature set from the service. The query task contains a query which selects where your layer field values meet a condition. You can then have a graphics layer be populated by the return feature set of the query.
The symbology or style of the graphics layer can be based on the query that was used. This would take some work if you are wanting some complex symbology but achievable nonetheless.
Simply put that is one direction for accomplishing such task.
I understand you do not want to load the same file multiple times, but does it necessary have to be dynamic? Caching the service would allow faster drawing. If your attributes are updated all the time, then this would not be a very good option, but if they do not then maybe it would help. Then users can then just select what they want to see and it will draw. With some simply scripting, you could even force only one service to be on at a time.
Hope this helps.
Best,
Chris B.