Prospects and limitations of algorithmic cooling