Ok I give up on this, it is still not working becuase it is part of a very messy old code. I created my own little application(using the same code, same .net framework) and it can connect to remote queues and read/write/peek. so I believe this was an example of maintenance nightmare of a very very old code base.
during my research I have found some useful links, which may help someone who lands here in future. John Breakwell has following to contribute about remote queue
There is a new security in MSMQ4.0
some ports info regarding msmq
some more info about remote msmq 4.0 processing
To see if your msmq is installed in workgroup mode or other one, goto HKLM->Software-> Microsoft->MSMQ->Parameters check REG_DWORD workgroup. 1 is workgroup mode. 0 is AD mode.
and if you want to know the version of your msmq, check version section of this wiki page
I almost forgot to mention that as a rule of thumb I believe we should always read local and write remote, not other way round.