If you're using modules (instead of calling a different action in the same controller like you seem to do here), requests are absolutely the way to go. And since requests use the routing table, you can control which controller/action is called by manipulating your routes.
Setting up a new request isn't very complex, the additional delay is a few milliseconds tops.
For completeness, the way to perform an HMVC request:
try
{
$result = \Request::forge('your/uri/here')->execute()->response()->body;
}
catch (\HttpNotFoundException $e)
{
// the requested URI could not be found
}