Why do subsequent unmet conditions in my CASE statement affect my return data type?
The column defined by your CASE expression has a data type, as all columns do.
SQL Server determines the resulting type in its usual way, making use of data type precedence. The type datetime has a higher precedence than integer.
You might be expecting the CASE expression to return different types on different paths, but that is not possible (sql_variant aside).