PSoC 3 (and 5) have the ability to send a lot of components (modules) into a sleep-state individually. When you leave only the needed parts active you will have a minimum of power needed, but it will be far more than to put the whole device hybernating.
Yes you could use a Capsense button as the power button. The methodology you are tring to follow is also one of the right methods to do it. Generally, when you talk about a low power application, it is the average current that matters and not just the sleep current. In you application, you come out of sleep every 100ms once scan the Capsense button and go back to sleep, this would perfectly. But, what you need to keep in mind is, when you ocme out of sleep, do not bring out all the peripherals to active state immediately and then measure the average current. I believe when you use the Sleep API(CyPmsleep), IMO is put to 12 MHz. This is the clock speed at which your code will be execited immediately after coming out of sleep. The slower is this clock longer is the device is going to stay in active mode for the same set of clock. So what I am trying to tell you is, it is a tradeoff between, speed and current. Try to adjust the active mode time and lkeep the number peripherals active to minimum.