You could try to use Conditional GANs and treat the “shape” as a class information. You would have to define certain shape classes, but this might be OK instead of reshaping all input images to the same resulution.
Also, the class label could be used to flip the transposed convolutions (swap height and width of the kernels), so that you could use the same model to create the mentioned outputs.
I think using the functional API might be easier in that case than modules.