I totally relate to what you are going through. I felt the same way when I first started using Appium a while ago for iOS and Android automation. Just like other frameworks there are different ways to achieve what you want with appium. Let me try to answer your question based on my experience using Appium+Cucumber+Java for both iOS and Android Automation.
-If you are using the Page Object pattern,I would use
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.ios.IOSDriver;
import org.openqa.selenium.WebElement;
Once you do this then you can use the iOS and Android drivers wherever you want. Also, using WebElement you can use all the normal appium commands. You mentioned "MobileElement"; which is a subclass of "WebElement"
In case you want to tap into Offline mode, Airplane mode features then you would need this package
import io.appium.java_client.android.Connection;
and then you may do something like this
((AndroidDriver) DRIVER).setConnection(Connection.AIRPLANE); //To switch to airplane mode
-If you are using Page Factory Pattern (An extension of Page Object pattern), I would use
import io.appium.java_client.pagefactory.AndroidFindAll;
import io.appium.java_client.pagefactory.AndroidFindBy;
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
import io.appium.java_client.pagefactory.iOSFindBy;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.WebElement;
Once you do this you can start using annotations like
@AndroidFindBy(id = "android resource id")
@iOSFindBy(accessibility = "iOS accessibility id")
private WebElement commonVariableToRepresentBothIds;
Hopefully this helps :-)
-Raj