Wish I knew about that before! Thanks heaps for the reference.
Gonna put my function here for any future references too. Feel free to point out any improvements.
public Map<PropertyIdentifier, Encodable> getObjectPropertyListNotNull(RemoteDevice d, ObjectIdentifier obj) throws BACnetException{
        List<ObjectPropertyTypeDefinition> propsDefs = ObjectProperties.getObjectPropertyTypeDefinitions(obj.getObjectType());
        ArrayList<PropertyIdentifier> props = new ArrayList<PropertyIdentifier>(propsDefs.size());
        Map<PropertyIdentifier, Encodable> propValuesFinal = new HashMap<>();
        
        for(ObjectPropertyTypeDefinition prop : propsDefs){props.add(prop.getPropertyTypeDefinition().getPropertyIdentifier());}
        
        
        if(d.getObject(obj) == null){
            Map<PropertyIdentifier, Encodable> propValues = RequestUtils.getProperties(localDevice, d, obj, null, props.toArray(new PropertyIdentifier[props.size()]));
            propValues.forEach((pid, val) -> {
                if(val instanceof ErrorClassAndCode)
                    return;
                propValuesFinal.put(pid, val);
                d.setObjectProperty(obj, pid, val);
            });
        }
        else{
            for(PropertyIdentifier pid : props){
                Encodable val = d.getObject(obj).getProperty(pid);
                if(val != null){
                    propValuesFinal.put(pid, val);
                }
            }
        }
        return propValuesFinal;
    }