I know a hidden service chooses six "Introduction Points" when it registers itself with a HS Directory. Under what basis are the Introduction Points chosen? It is just consensus weight? I have no idea.
It follows the same process of establishing connections to other nodes based on bandwidth weight and other properties. If it's the first time the HS is establishing directory nodes, it will accept the first two that receive a response and then be more selective after a few have been cached. These circuits to the IP's are only used as introduction circuits and never used in part of the general pool.
At least, that's what the source says. There does not appear to be any details in the rend-spec itself.