The problem happens when the variable "function" attempts to look up the procedure for 'control-points. Each override you do is tacked onto the front of the alist and so the key we're looking for-- 'control-points -- is pushed further back. You can see what I mean by changing cdr in the assignment for function (line 20?) to cddr for one override, cdddr for two overrides... This will "fix" the problem--provided the overrides come after \shape ... (The reason why cdr is used in the first place is that the current override of 'control-points would be there at the head of the list, and you'd get "calculation-in-progress" instead of ly:slur::calc-control-points or whatever.) I'll think about how to fix this and get back to you.
Thank you for noticing this!!