You have two options:
1) use a dedicated port on the server for non-syslog traffic, and also use flags(no-parse) there
2) stick to using a standard transport, but then you should ensure that clients send a complete syslog message there.
Although syslog-ng (on the client) does prepend a minimal header to your apache log even without a template, it doesn't prepend a program name explicitly, thus your on-wire apache log will look like this:
<pri>$DATE $HOST 172.27.15.149 - - [
12/Nov/2015:08:30:59 +0000] "GET / HTTP/1.1" 200...
This is standard syslog already and if you don't have a template on the server, this would be reproduced completely. Anyway, the format above is processed by syslog-ng on the server side as as an rfc3164 message, so it will parse the IP address (172.27.15.149) as the program name (bloody heuristics), but then you omitted that with your explicit template(), as you only have ${MESSAGE} there.
So you have three options:
2.a) use template ("$MSGHDR$MSG\n") without the $DATE/$HOST macros on the server, this would restore the IP address as part of $MSGHDR