Your XSLT processor isn't being very clever here, but it's acting within the rules, and there's no obvious way of changing its behaviour. You could switch to a better XSLT processor, or you could write to the vendor and complain. Alternatively, a trick that might work is to concatenate the results of the two template calls in a variable and then output the variable (or perhaps in two separate variables, and output <xsl:value-of select="concat($v1, $v2)"/>)
But do you really need the output in CDATA sections, and why? Any XML parser will treat it exactly the same if it's not in a CDATA section.
Author, XSLT 2.0 and XPath 2.0 Programmer's Reference