Из явно зацепивших мой взгляд могу выделить пару моментов.
Я бы не стал делать того, что происходит в

Код AS3:
// ОБНУЛЯЕМ ПАРАМЕТРЫ (при удалении со сцены)
function reset(e:Event){}
Мне так кажется, что процедура удаления и добавления на сцену никак не связана с помещением в пул или извлечением этого объекта из него соответственно. Операции с дисплейлистом часто требуют добавления или удаление одного и того же объекта, ожидая, что с ним ничего не случится при этих операциях. Однако, вы заставляете себя писать код, который фактически заново должен будет проинициализировать ваше дите, единожды уже побывавшее в дисплейлисте. Ваш type исчезает после удаления экземпляра Block со сцены. Вот если бы кто-то решал, что этот экземпляр действительно
не нужен, то можно как раз применить метод clean (его именуют dispose обычно) и отправлять объект в пул.
Пул для одного типа объектов считаю рациональным объявлять в самом классе объекта.