About the camera sliding, there was a code that someone did but I cannot recall who did it; it was probably mit because his code is awesome like that. The code for the view thing looks like like:
view_xview[0] = (view_xview[0] * 4 + (x - 120)) / 5;
view_yview[0] = (view_yview[0] * 4 + (y - 80)) / 5;
The code for the view that I had in there was mainly just added as a means to check sliding distance relative to things in a fixed position.
About the corner-cutting, it could be altered probably so that it has the ability to be more sensitive, but meh. The way it works differently from past corner-cutting is it checks to see if it is inside an object's bounding box at its previous position. If it is in that bounding box, then it checks to do the corner-cutting because otherwise all Link is running into is a flat wall. Adding more corner-cutting sensitivity in wouldn't be too difficult.
Creating a new object as an alternate shadow for Link, not sure what you mean by that, but the mask that Link uses works well enough, I'd think.
Also, about getting onto ice, falling in a pit, and returning to previous solid ground or start position, the way in which enters the ice (and how it also checks to see whether or not he had previously been on the ice) allows to have an "entry point" which can easily be determined. It might not need new variables either, just assigning new values to xstart and ystart.