Here many years later to point out that as of 2022, Perforce provides Stream components (https://help.perforce.com/helix-core/server-apps/p4v/current/Content/P4V/stream-components.html), which seem to be able to achieve this.
In short, on the Components section of the Advanced tab of a client stream's property page (assuming you're using P4V), you'd specify a line like:
readonly dirX //streams/X
where stream X can itself contain other components etc. These components can be made writeable, as well as point to specific changelists in the source stream and not just the head. They look pretty similar to git modules, although I haven't yet had the chance to use them myself, so cannot comment much further.