There are a number of fundamental code errors here. (And the calculated field part isn‘t relevant.)
Let me review.
#set ($OpportunityList = $OpportunityList + 1)
Here you’re attempting to add an Integer (mathematically) to a List instance. This doesn’t do anything (it silently fails) not sure what you’re actually intending.
#if (${OpportunityList.Days_Until_Contract_Start_Date__c} == "42")
Multiple problems here.
First, don’t use formal reference (curly brace) syntax inside directives. They’re only necessary for output or, in some cases, inside strings.
Second, don’t use the double-equals sign as it has unexpected behavior. Always use the .equals() method.
So at the very least, syntax-wise, you should start with this:
#if( $OpportunityList.Days_Until_Contract_Start_Date__c.equals("42") )
However, this still doesn’t make logical sense. You’re checking the property Days_Until_Contract_Start_Date__c of the entire List object. Not of items in the list, but of the whole list. That’s just a null result. You mean to check the property of individual items in the list.
If you’re trying to scan all the items in a list for the (first) item with a certain property value, with a fallback if not found, do it like so:
#set( $CSDdate = "Unavailable" )
#foreach( $Opportunity in $OpportunityList )
#if( $Opportunity.Days_Until_Contract_Start_Date__c.equals("42") )
#set( $CSDdate = $Opportunity.Contract_Start_Date__c )
#break
#end
#end
${CSDdate}