Track outline as list of (x,y) pairs instead of just coordinates
Give default (circular) physical objects a nominal outline
Do real collision detection based on outlines
Only check each pair of critters for collisions once per tick
Speed up overlap checking at the cost of accuracy