I came to the same conclusions as yours.
Steps 4-5 I did this way: when I create the symbol instance I give it a special name, like "button_image1". Then in the code you can check this property doing:
var symbolElement = sym.getSymbolElement();
var id = symbolElement.attr("id")
var tokens = id.split("_");
var image = tokens[1];
And set the right image as background.
You can put this code on the creation_complete event of the symbol.