In XSD 1.0 I do not know of a way to achieve what you say you want. (The design of XML is based on the premise that different kinds of objects are called different things; if you want home addresses and work addresses to have different validation behavior, that's good evidence that they are different things, for your purposes, and should not be called the same thing. If you name the elements WorkAddress and HomeAddress, you have no problem. Things go much better if we don't lie to the processor about what things are.)
In XSD 1.1 you can specify in the content model that 'address' must occur at least once, and use an assertion to check that the first occurrence has type="work" and the second (if it occurs) type="home".