Your second sort phase should sort different lists. In order to do that you should sort more than once. Also, please notice that every element of @s1_events is a hashref, and the 'list' element of the hashref is an arrayref, not another hash. Therefore, you can't $a->{list}{date}.
In order to sort each month's list, I would iterate through months, and sort, like:
Thanks broquaint and Ido for the nearly instant solution and explanation, helping me get my head around these complicated data structures. I Googled for hours, but found it here at the monastery in minutes. Thanks.
—Brad "Don't ever take a fence down until you know the reason it was put up. " G. K. Chesterton