The correct version is
Ich hätte in die Stadt gehen sollen.
Let's leave out the middle part for a moment; then the phrase becomes
Ich hätte gesollt.
The auxiliary is haben because the modal verb sollen demands haben, not sein. If we reinsert the middle part, which is an infinitive construction, then the past participle gesollt is replaced by the infinitive sollen (Ersatzinfinitiv).
Recipe:
As we can see, the difficult part of the sentence is that it has two infinitives. How do we determine which auxiliary is needed? We must find out which of the two infinitives determines the auxiliary! Here are some clues:
- One of the two infinitives is a modal verb. It's the modal verb that determines the auxiliary; and since modals need haben, it's hätte, not wäre.
- If we know which of the two infinitives replaces the past participle, then we know that that verb determines the auxiliary. In our sentence it is sollen which replaces gesollt. Gesollt needs haben, so it's hätte, not wäre.
- If unsure which of the two infinitives is the Ersatzinfinitiv, then take the last one. For example this Wikipedia article says that the Ersatzinfinitiv takes the last position in a sentence. The last infinitive in our sentence is sollen. And since we know that sollen demands haben as an auxiliary, we are done.
[To answer the question in your title: No, even for sein-verbs the construction should be hätte ... können, not wäre ... können.]