The health monitor is applied to a Pool, not a Virtual Server. But yes, the Alias fields say, in effect, "check this ip address/port instead of the ip/port of the members in the pool where it's applied". But what I would do first is create a bogus pool with the maintenance members and apply the maintenance monitor there. That way, you're not fussing with the production pool.
There could be a number of issues around "getting the header" (still not 100% confident I understand what that means exactly, but I think I do). One thing I know for certain is that the LTM only looks for the Receive String in the the first 5120 bytes of the HTTP response - the response headers are included in that 5120 limit. But assuming it's not that or something like a firewall or routing issue, typically what I would do is perform a tcpdump and see exactly how the maintenance server is responding on the wire. This is something I do all the time, but not everyone knows how to do this or analyze the output. I can help if needed if you feel comfortable sharing a network trace. You may be able to send me a private message with attachment if you don't want to post it to everyone.
(edit)
Also I forgot to answer your persistence question. I think when the Virtual Server is marked down, it will still trigger the LB_FAILED event even if the connection is persistent because when the VS is down, the LTM has nowhere to send the traffic. You should test this though.