I can't Sybase to accept the alias in the UPDATE clause, either as a standalone (like MS) or the TableName AlisName form.

I usually don't like the ANSI join syntax, as it always seems more cumbersome - especially when joining multiple tables (not to mention I've never figured out a decent way to do the indentation). In this case, though, the ANSI syntax should clarify which self is being updated:
UPDATE atable\nSET afield = parent.afield\nFROM \n   atable child\n   INNER JOIN atable parent\n      ON child.ParentID = parent.SelfID