Рещение найдено с помощью вот такой вот функции:
function createSwat(className)
{
	var els = YAHOO.util.Dom.getElementsByClassName(className,'textarea'),
	textarea_obj=[];
	for(var i=0,l=els.length;i<l;i++){
	els[i]['id'] = els[i]['id']||('res_'+i);
	textarea_obj.push(new SwatTextarea(els[i]['id']));
	}
	return textarea_obj;
}
В итоге получилось нечто типа (упрощенно)...
function SwatTextarea(id)
{
	this.id = id;
	YAHOO.util.Event.onContentReady(this.id, this.handleOnAvailable, this, true);
}
SwatTextarea.prototype.handleOnAvailable = function()
{
	this.textarea = document.getElementById(this.id);
}
function createSwat(className)
{
	var els = YAHOO.util.Dom.getElementsByClassName(className,'textarea'),
	textarea_obj=[];
	for(var i=0,l=els.length;i<l;i++){
	els[i]['id'] = els[i]['id']||('res_'+i);
	textarea_obj.push(new SwatTextarea(els[i]['id']));
	}
	return textarea_obj;
}
YAHOO.util.Event.onDOMReady(function(){createSwat('custom_class')});
Однако это не избавляет нас от id-шников, а даже как бы наоборот. Посему цель не совсем достигнута и вопрос остается открытым (
интересен альтернативный вариант решения проблемы, который позволит полностью избавиться от использования id).